mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "8ec570570f36161f241ee0f30d0626e143819855" and "ebaa7d561a262e96830c03ac98e3689f2a70e6d0" have entirely different histories.
		
	
	
		
			8ec570570f
			...
			ebaa7d561a
		
	
		
					 25 changed files with 144 additions and 261 deletions
				
			
		
							
								
								
									
										4
									
								
								.github/workflows/coverity.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/coverity.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -49,9 +49,7 @@ jobs: | |||
|         msbuild-architecture: x64 | ||||
| 
 | ||||
|     - name: Build with Coverity | ||||
|       run: |  | ||||
|         cov-configure --msvc | ||||
|         cov-build.exe --dir cov-int msbuild ${{ env.SOLUTION_FILE_PATH }} /m /p:Configuration=${{ env.BUILD_CONFIGURATION }},Platform=${{ env.TARGET_PLATFORM }} | ||||
|       run: cov-build.exe --dir cov-int msbuild ${{ env.SOLUTION_FILE_PATH }} /m /p:Configuration=${{ env.BUILD_CONFIGURATION }},Platform=${{ env.TARGET_PLATFORM }} | ||||
| 
 | ||||
|     - name: Publish Coverity artifacts | ||||
|       uses: actions/upload-artifact@v2 | ||||
|  |  | |||
							
								
								
									
										2
									
								
								.github/workflows/vs2022.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/vs2022.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -80,5 +80,5 @@ jobs: | |||
|       uses: actions/upload-artifact@v2 | ||||
|       if: ${{ github.event_name == 'push' }} | ||||
|       with: | ||||
|         name: VS2022 | ||||
|         name: VS2019 | ||||
|         path: ./*.exe | ||||
|  |  | |||
|  | @ -133,12 +133,12 @@ | |||
|       <AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <TargetMachine>MachineX86</TargetMachine> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -158,12 +158,12 @@ | |||
|       <AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -185,12 +185,12 @@ | |||
|       <AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -217,12 +217,12 @@ | |||
|       <AdditionalOptions>/utf-8 $(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <TargetMachine>MachineX64</TargetMachine> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -244,13 +244,12 @@ | |||
|       <StringPooling>true</StringPooling> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <TargetMachine>MachineX86</TargetMachine> | ||||
|       <AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -272,13 +271,12 @@ | |||
|       <StringPooling>true</StringPooling> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm</AdditionalLibraryDirectories> | ||||
|       <AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -302,13 +300,12 @@ | |||
|       <StringPooling>true</StringPooling> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;ole32.lib;advapi32.lib;gdi32.lib;shell32.lib;comdlg32.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories> | ||||
|       <AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;ole32.dll;advapi32.dll;gdi32.dll;shell32.dll;comdlg32.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  | @ -335,13 +332,12 @@ | |||
|       <StringPooling>true</StringPooling> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalDependencies>advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;version.lib;wintrust.lib;psapi.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <UACExecutionLevel>RequireAdministrator</UACExecutionLevel> | ||||
|       <GenerateDebugInformation>false</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <TargetMachine>MachineX64</TargetMachine> | ||||
|       <AdditionalOptions>/BREPRO %(AdditionalOptions)</AdditionalOptions> | ||||
|       <DelayLoadDLLs>advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs)</DelayLoadDLLs> | ||||
|     </Link> | ||||
|     <ResourceCompile> | ||||
|       <PreprocessorDefinitions>_UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|  |  | |||
|  | @ -1,12 +1,3 @@ | |||
| o Version 3.18 (2022.03.11) | ||||
|     Fix DLL sideloading vulnerabilities | ||||
|     Fix ISO → ESP creation when running on Windows 11 | ||||
|     Fix an issue when detecting network connectivity when the DHCP service is disabled | ||||
|     Update FreeDOS to version 1.3 | ||||
|     Add bypass of Windows 11 restrictions for in-place upgrades | ||||
|     Add Miracle Linux 8 to the list of Red Hat exceptions | ||||
|     Other internal fixes and improvements | ||||
| 
 | ||||
| o Version 3.17 (2021.10.23) [BUGFIX RELEASE] | ||||
|     Fix MBR not being properly cleared | ||||
|     Fix commandline hogger not being deleted on exit | ||||
|  |  | |||
							
								
								
									
										20
									
								
								configure
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								configure
									
										
									
									
										vendored
									
									
								
							|  | @ -1,6 +1,6 @@ | |||
| #! /bin/sh | ||||
| # Guess values for system-dependent variables and create Makefiles. | ||||
| # Generated by GNU Autoconf 2.71 for rufus 3.19. | ||||
| # Generated by GNU Autoconf 2.71 for rufus 3.18. | ||||
| # | ||||
| # Report bugs to <https://github.com/pbatard/rufus/issues>. | ||||
| # | ||||
|  | @ -611,8 +611,8 @@ MAKEFLAGS= | |||
| # Identity of this package. | ||||
| PACKAGE_NAME='rufus' | ||||
| PACKAGE_TARNAME='rufus' | ||||
| PACKAGE_VERSION='3.19' | ||||
| PACKAGE_STRING='rufus 3.19' | ||||
| PACKAGE_VERSION='3.18' | ||||
| PACKAGE_STRING='rufus 3.18' | ||||
| PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues' | ||||
| PACKAGE_URL='https://rufus.ie' | ||||
| 
 | ||||
|  | @ -1268,7 +1268,7 @@ if test "$ac_init_help" = "long"; then | |||
|   # Omit some internal or obsolete options to make the list less imposing. | ||||
|   # This message is too long to be a string in the A/UX 3.1 sh. | ||||
|   cat <<_ACEOF | ||||
| \`configure' configures rufus 3.19 to adapt to many kinds of systems. | ||||
| \`configure' configures rufus 3.18 to adapt to many kinds of systems. | ||||
| 
 | ||||
| Usage: $0 [OPTION]... [VAR=VALUE]... | ||||
| 
 | ||||
|  | @ -1335,7 +1335,7 @@ fi | |||
| 
 | ||||
| if test -n "$ac_init_help"; then | ||||
|   case $ac_init_help in | ||||
|      short | recursive ) echo "Configuration of rufus 3.19:";; | ||||
|      short | recursive ) echo "Configuration of rufus 3.18:";; | ||||
|    esac | ||||
|   cat <<\_ACEOF | ||||
| 
 | ||||
|  | @ -1427,7 +1427,7 @@ fi | |||
| test -n "$ac_init_help" && exit $ac_status | ||||
| if $ac_init_version; then | ||||
|   cat <<\_ACEOF | ||||
| rufus configure 3.19 | ||||
| rufus configure 3.18 | ||||
| generated by GNU Autoconf 2.71 | ||||
| 
 | ||||
| Copyright (C) 2021 Free Software Foundation, Inc. | ||||
|  | @ -1503,7 +1503,7 @@ cat >config.log <<_ACEOF | |||
| This file contains any messages produced by compilers while | ||||
| running configure, to aid debugging if configure makes a mistake. | ||||
| 
 | ||||
| It was created by rufus $as_me 3.19, which was | ||||
| It was created by rufus $as_me 3.18, which was | ||||
| generated by GNU Autoconf 2.71.  Invocation command line was | ||||
| 
 | ||||
|   $ $0$ac_configure_args_raw | ||||
|  | @ -2767,7 +2767,7 @@ fi | |||
| 
 | ||||
| # Define the identity of the package. | ||||
|  PACKAGE='rufus' | ||||
|  VERSION='3.19' | ||||
|  VERSION='3.18' | ||||
| 
 | ||||
| 
 | ||||
| printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h | ||||
|  | @ -5205,7 +5205,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 | |||
| # report actual input values of CONFIG_FILES etc. instead of their | ||||
| # values after options handling. | ||||
| ac_log=" | ||||
| This file was extended by rufus $as_me 3.19, which was | ||||
| This file was extended by rufus $as_me 3.18, which was | ||||
| generated by GNU Autoconf 2.71.  Invocation command line was | ||||
| 
 | ||||
|   CONFIG_FILES    = $CONFIG_FILES | ||||
|  | @ -5261,7 +5261,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ | |||
| cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | ||||
| ac_cs_config='$ac_cs_config_escaped' | ||||
| ac_cs_version="\\ | ||||
| rufus config.status 3.19 | ||||
| rufus config.status 3.18 | ||||
| configured by $0, generated by GNU Autoconf 2.71, | ||||
|   with options \\"\$ac_cs_config\\" | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| AC_INIT([rufus], [3.19], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie]) | ||||
| AC_INIT([rufus], [3.18], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie]) | ||||
| AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies]) | ||||
| AC_CONFIG_SRCDIR([src/rufus.c]) | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ del /q *.map >NUL 2>&1 | |||
| set WDK_PATH=C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64 | ||||
| set ZIP_PATH=C:\Program Files\7-Zip | ||||
| set SIGNATURE_SHA1=3dbc3a2a0e9ce8803b422cfdbc60acd33164965d | ||||
| set MSBUILD_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin | ||||
| set MANIFEST=AppxManifest.xml | ||||
| set ARCHS=x86 x64 arm arm64 | ||||
| set DEFAULT_SCALE=200 | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -1,11 +1,21 @@ | |||
| All of the executables found in this repository where extracted from: | ||||
| https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.3/official/FD13-FullUSB.zip | ||||
| 
 | ||||
| o COMMAND.COM was extracted from packages\base\freecom.zip | ||||
| o DISPLAY.EXE was extracted from packages\base\display.zip | ||||
| o The EGA[#].CPX files were extracted from packages\base\cpidos.zip | ||||
| o KERNEL.SYS was taken from packages\base\kernel.zip (KERNL386.SYS) | ||||
| o KERNEL.SYS was taken from KERNL386.SYS in FreeDOS Kernel 2042: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/kernel.zip | ||||
|   It was modified to have FORCELBA enabled (byte offset 0x0D set to 0x01) | ||||
| o KEYB.EXE was extracted from packages\base\keyb.zip | ||||
| o The KEYB###.SYS keyboard layouts were extracted from packages\base\keyb_lay.zip | ||||
| o MODE.COM was extracted from packages\base\mode.zip | ||||
| 
 | ||||
| o COMMAND.COM was extracted from FreeCom 0.84 pre 2: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/command.zip | ||||
| 
 | ||||
| o The EGA files were extracted from CPI (Code Page Information) Package 3.0: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/cpidos.zip | ||||
| 
 | ||||
| o DISPLAY.EXE was extracted from Display 0.13b: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/display.zip | ||||
| 
 | ||||
| o KEYB.EXE was extracted from Keyb 2.01: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/keyb.zip | ||||
|    | ||||
| o The keyboard layouts (KEYB___.SYS) were extracted from Keyb Layouts 3.1: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/keyb_lay.zip | ||||
| 
 | ||||
| o MODE.COM was extracted from Mode 2015-11-25: | ||||
|   http://ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/base/mode.zip | ||||
|  |  | |||
|  | @ -1166,13 +1166,13 @@ msgstr "互換性のないドライブが検出されました。" | |||
| #. | ||||
| #. Used in MSG_235 | ||||
| msgid "Write pass" | ||||
| msgstr "書き込み中" | ||||
| msgstr "書き込みをパスしました。" | ||||
| 
 | ||||
| #. • MSG_192 | ||||
| #. | ||||
| #. Used in MSG_235 | ||||
| msgid "Read pass" | ||||
| msgstr "読み出し中" | ||||
| msgstr "読み出しをパスしました。" | ||||
| 
 | ||||
| #. • MSG_193 | ||||
| msgid "Downloaded %s" | ||||
|  | @ -1385,7 +1385,7 @@ msgstr "Syslinux %s をインストール中..." | |||
| #. Bad blocks status. Example: "Bad Blocks: Write pass 1/2 - 12.34% (0/0/1 errors)" | ||||
| #. See MSG_191 & MSG_192 for "Write pass"/"Read pass" translation. | ||||
| msgid "Bad Blocks: %s %d/%d - %0.2f%% (%d/%d/%d errors)" | ||||
| msgstr "不良ブロック: %s %d/%d パス - %0.2f%% (エラー: %d/%d/%d)" | ||||
| msgstr "不良ブロック: %s %d/%d - %0.2f%% (エラー: %d/%d/%d)" | ||||
| 
 | ||||
| #. • MSG_236 | ||||
| msgid "Bad Blocks: Testing with random pattern" | ||||
|  |  | |||
|  | @ -6778,8 +6778,8 @@ t MSG_187 "選択したブート設定には無効なイメージです。" | |||
| t MSG_188 "現在選択中のイメージとブート設定が一致しません。別のイメージを使うか、他のブート設定を使用してください。" | ||||
| t MSG_189 "この ISO は選択中のファイル システムと互換性がありません。" | ||||
| t MSG_190 "互換性のないドライブが検出されました。" | ||||
| t MSG_191 "書き込み中" | ||||
| t MSG_192 "読み出し中" | ||||
| t MSG_191 "書き込みをパスしました。" | ||||
| t MSG_192 "読み出しをパスしました。" | ||||
| t MSG_193 "%s をダウンロードしました。" | ||||
| t MSG_194 "%s はダウンロードできませんでした。" | ||||
| t MSG_195 "内蔵している %s ファイルを使用します。" | ||||
|  | @ -6820,7 +6820,7 @@ t MSG_231 "ISO ファイルをコピー中: %s" | |||
| t MSG_232 "Win7 EFI ブート セットアップ中 (%s)..." | ||||
| t MSG_233 "最終処理中です。もう間もなく終わります..." | ||||
| t MSG_234 "Syslinux %s をインストール中..." | ||||
| t MSG_235 "不良ブロック: %s %d/%d パス - %0.2f%% (エラー: %d/%d/%d)" | ||||
| t MSG_235 "不良ブロック: %s %d/%d - %0.2f%% (エラー: %d/%d/%d)" | ||||
| t MSG_236 "不良ブロック: ランダムパターンでテスト" | ||||
| t MSG_237 "不良ブロック: パターン 0x%02X でテスト" | ||||
| t MSG_238 "パーティション分割中 (%s)..." | ||||
|  |  | |||
|  | @ -17,4 +17,4 @@ rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/sy | |||
| rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows | ||||
| # Note: Do not link with -lversion as this will results in DLL sideloading issue. See https://github.com/pbatard/rufus/pull/1838 | ||||
| rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \ | ||||
| 	libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid -lpsapi | ||||
| 	libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi | ||||
|  |  | |||
|  | @ -283,7 +283,7 @@ rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/sy | |||
| rufus_LDFLAGS = $(AM_LDFLAGS) -mwindows | ||||
| # Note: Do not link with -lversion as this will results in DLL sideloading issue. See https://github.com/pbatard/rufus/pull/1838
 | ||||
| rufus_LDADD = rufus_rc.o bled/libbled.a ext2fs/libext2fs.a ms-sys/libmssys.a syslinux/libfat/libfat.a syslinux/libinstaller/libinstaller.a syslinux/win/libwin.a \
 | ||||
| 	libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid -lpsapi | ||||
| 	libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi | ||||
| 
 | ||||
| all: all-recursive | ||||
| 
 | ||||
|  |  | |||
|  | @ -65,6 +65,7 @@ typedef struct _TIME_FIELDS { | |||
| 	short Minute; | ||||
| 	short Second; | ||||
| 	short Milliseconds; | ||||
| 	short Weekday; | ||||
| } TIME_FIELDS, *PTIME_FIELDS; | ||||
| 
 | ||||
| #define ARGUMENT_PRESENT(ArgumentPointer) \ | ||||
|  |  | |||
							
								
								
									
										170
									
								
								src/drive.c
									
										
									
									
									
								
							
							
						
						
									
										170
									
								
								src/drive.c
									
										
									
									
									
								
							|  | @ -29,8 +29,8 @@ | |||
| #include <assert.h> | ||||
| #if !defined(__MINGW32__) | ||||
| #include <initguid.h> | ||||
| #include <vds.h> | ||||
| #endif | ||||
| #include <vds.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
|  | @ -1487,43 +1487,6 @@ BOOL AnalyzePBR(HANDLE hLogicalVolume) | |||
| 	return TRUE; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * This call returns the offset of the first ESP partition found | ||||
|  * on the relevant drive, or 0ULL if no ESP was found. | ||||
|  */ | ||||
| uint64_t GetEspOffset(DWORD DriveIndex) | ||||
| { | ||||
| 	uint64_t ret = 0ULL; | ||||
| 	BOOL r; | ||||
| 	HANDLE hPhysical; | ||||
| 	DWORD size, i; | ||||
| 	BYTE layout[4096] = { 0 }; | ||||
| 	PDRIVE_LAYOUT_INFORMATION_EX DriveLayout = (PDRIVE_LAYOUT_INFORMATION_EX)(void*)layout; | ||||
| 
 | ||||
| 	hPhysical = GetPhysicalHandle(DriveIndex, FALSE, TRUE, TRUE); | ||||
| 	if (hPhysical == INVALID_HANDLE_VALUE) | ||||
| 		return FALSE; | ||||
| 
 | ||||
| 	r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, | ||||
| 		NULL, 0, layout, sizeof(layout), &size, NULL); | ||||
| 	if (!r || size <= 0) { | ||||
| 		uprintf("Could not get layout for drive 0x%02x: %s", DriveIndex, WindowsErrorString()); | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	for (i = 0; i < DriveLayout->PartitionCount; i++) { | ||||
| 		if (((DriveLayout->PartitionStyle == PARTITION_STYLE_MBR) && (DriveLayout->PartitionEntry[i].Mbr.PartitionType == 0xef)) || | ||||
| 			((DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) && CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_GENERIC_ESP))) { | ||||
| 			ret = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart; | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| out: | ||||
| 	safe_closehandle(hPhysical); | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static BOOL StoreEspInfo(GUID* guid) | ||||
| { | ||||
| 	uint8_t j; | ||||
|  | @ -1568,23 +1531,12 @@ static BOOL ClearEspInfo(uint8_t index) | |||
| BOOL ToggleEsp(DWORD DriveIndex, uint64_t PartitionOffset) | ||||
| { | ||||
| 	char *volume_name, mount_point[] = DEFAULT_ESP_MOUNT_POINT; | ||||
| 	int i, j, esp_index = -1; | ||||
| 	BOOL r, ret = FALSE, delete_data = FALSE; | ||||
| 	BOOL r, ret = FALSE, found = FALSE; | ||||
| 	HANDLE hPhysical; | ||||
| 	DWORD dl_size, size, offset; | ||||
| 	BYTE layout[4096] = { 0 }, buf[512]; | ||||
| 	GUID *guid = NULL, *stored_guid = NULL, mbr_guid; | ||||
| 	DWORD size, i, j, esp_index = 0; | ||||
| 	BYTE layout[4096] = { 0 }; | ||||
| 	GUID* guid; | ||||
| 	PDRIVE_LAYOUT_INFORMATION_EX DriveLayout = (PDRIVE_LAYOUT_INFORMATION_EX)(void*)layout; | ||||
| 	typedef struct { | ||||
| 		const uint8_t mbr_type; | ||||
| 		const uint8_t magic[8]; | ||||
| 	} fat_mbr_type; | ||||
| 	const fat_mbr_type fat_mbr_types[] = { | ||||
| 		{ 0x0b, { 'F', 'A', 'T', ' ', ' ', ' ', ' ', ' ' } }, | ||||
| 		{ 0x01, { 'F', 'A', 'T', '1', '2', ' ', ' ', ' ' } }, | ||||
| 		{ 0x0e, { 'F', 'A', 'T', '1', '6', ' ', ' ', ' ' } }, | ||||
| 		{ 0x0c, { 'F', 'A', 'T', '3', '2', ' ', ' ', ' ' } }, | ||||
| 	}; | ||||
| 
 | ||||
| 	if ((PartitionOffset == 0) && (nWindowsVersion < WINDOWS_10)) { | ||||
| 		uprintf("ESP toggling is only available for Windows 10 or later"); | ||||
|  | @ -1595,113 +1547,86 @@ BOOL ToggleEsp(DWORD DriveIndex, uint64_t PartitionOffset) | |||
| 	if (hPhysical == INVALID_HANDLE_VALUE) | ||||
| 		return FALSE; | ||||
| 
 | ||||
| 	r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, NULL, 0, layout, sizeof(layout), &dl_size, NULL); | ||||
| 	if (!r || dl_size <= 0) { | ||||
| 	r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, | ||||
| 		NULL, 0, layout, sizeof(layout), &size, NULL); | ||||
| 	if (!r || size <= 0) { | ||||
| 		uprintf("Could not get layout for drive 0x%02x: %s", DriveIndex, WindowsErrorString()); | ||||
| 		goto out; | ||||
| 	} | ||||
| 	// TODO: Handle MBR
 | ||||
| 	if (DriveLayout->PartitionStyle != PARTITION_STYLE_GPT) { | ||||
| 		uprintf("ESP toggling is only available for GPT drives"); | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	if (PartitionOffset == 0) { | ||||
| 		// See if the current drive contains an ESP
 | ||||
| 		for (i = 0; i < (int)DriveLayout->PartitionCount; i++) { | ||||
| 			if (((DriveLayout->PartitionStyle == PARTITION_STYLE_MBR) && (DriveLayout->PartitionEntry[i].Mbr.PartitionType == 0xef)) || | ||||
| 				((DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) && CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_GENERIC_ESP))) { | ||||
| 		for (i = 0, j = 0; i < DriveLayout->PartitionCount; i++) { | ||||
| 			if (CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_GENERIC_ESP)) { | ||||
| 				esp_index = i; | ||||
| 				break; | ||||
| 				j++; | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		if (esp_index >= 0) { | ||||
| 			// ESP -> Basic Data
 | ||||
| 			if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) { | ||||
| 				uprintf("ESP name: '%S'", DriveLayout->PartitionEntry[esp_index].Gpt.Name); | ||||
| 				guid = &DriveLayout->PartitionEntry[esp_index].Gpt.PartitionId; | ||||
| 			} else { | ||||
| 				// For MBR we create a GUID from the disk signature and the offset
 | ||||
| 				mbr_guid.Data1 = DriveLayout->Mbr.Signature; | ||||
| 				mbr_guid.Data2 = 0; mbr_guid.Data3 = 0; | ||||
| 				*((uint64_t*)&mbr_guid.Data4) = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart; | ||||
| 				guid = &mbr_guid; | ||||
| 		if (j > 1) { | ||||
| 			uprintf("ESP toggling is not available for drives with more than one ESP"); | ||||
| 			goto out; | ||||
| 		} | ||||
| 			if (!StoreEspInfo(guid)) { | ||||
| 		if (j == 1) { | ||||
| 			// ESP -> Basic Data
 | ||||
| 			i = esp_index; | ||||
| 			uprintf("ESP name: '%S'", DriveLayout->PartitionEntry[i].Gpt.Name); | ||||
| 			if (!StoreEspInfo(&DriveLayout->PartitionEntry[i].Gpt.PartitionId)) { | ||||
| 				uprintf("ESP toggling data could not be stored"); | ||||
| 				goto out; | ||||
| 			} | ||||
| 			if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) { | ||||
| 				DriveLayout->PartitionEntry[esp_index].Gpt.PartitionType = PARTITION_MICROSOFT_DATA; | ||||
| 			} else if (DriveLayout->PartitionStyle == PARTITION_STYLE_MBR) { | ||||
| 				// Default to FAT32 (non LBA) if we can't determine anything better
 | ||||
| 				DriveLayout->PartitionEntry[esp_index].Mbr.PartitionType = 0x0b; | ||||
| 				// Now detect if we're dealing with FAT12/16/32
 | ||||
| 				if (SetFilePointerEx(hPhysical, DriveLayout->PartitionEntry[esp_index].StartingOffset, NULL, FILE_BEGIN) && | ||||
| 					ReadFile(hPhysical, buf, 512, &size, NULL) && size == 512) { | ||||
| 					for (offset = 0x36; offset <= 0x52; offset += 0x1c) { | ||||
| 						for (i = 0; i < ARRAYSIZE(fat_mbr_types); i++) { | ||||
| 							if (memcmp(&buf[offset], fat_mbr_types[i].magic, 8) == 0) { | ||||
| 								DriveLayout->PartitionEntry[esp_index].Mbr.PartitionType = fat_mbr_types[i].mbr_type; | ||||
| 								break; | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			DriveLayout->PartitionEntry[i].Gpt.PartitionType = PARTITION_MICROSOFT_DATA; | ||||
| 		} else { | ||||
| 			// Basic Data -> ESP
 | ||||
| 			for (i = 1; i <= MAX_ESP_TOGGLE && esp_index < 0; i++) { | ||||
| 				stored_guid = GetEspGuid((uint8_t)i); | ||||
| 				if (stored_guid != NULL) { | ||||
| 					for (j = 0; j < (int)DriveLayout->PartitionCount && esp_index < 0; j++) { | ||||
| 						if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) { | ||||
| 							guid = &DriveLayout->PartitionEntry[j].Gpt.PartitionId; | ||||
| 						} else if (DriveLayout->PartitionStyle == PARTITION_STYLE_MBR) { | ||||
| 							mbr_guid.Data1 = DriveLayout->Mbr.Signature; | ||||
| 							mbr_guid.Data2 = 0; mbr_guid.Data3 = 0; | ||||
| 							*((uint64_t*)&mbr_guid.Data4) = DriveLayout->PartitionEntry[j].StartingOffset.QuadPart; | ||||
| 							guid = &mbr_guid; | ||||
| 						} | ||||
| 						if (CompareGUID(stored_guid, guid)) { | ||||
| 							esp_index = j; | ||||
| 							delete_data = TRUE; | ||||
| 							if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) | ||||
| 								DriveLayout->PartitionEntry[esp_index].Gpt.PartitionType = PARTITION_GENERIC_ESP; | ||||
| 							else if (DriveLayout->PartitionStyle == PARTITION_STYLE_MBR) | ||||
| 								DriveLayout->PartitionEntry[esp_index].Mbr.PartitionType = 0xef; | ||||
| 			for (j = 1; j <= MAX_ESP_TOGGLE; j++) { | ||||
| 				guid = GetEspGuid((uint8_t)j); | ||||
| 				if (guid != NULL) { | ||||
| 					for (i = 0; i < DriveLayout->PartitionCount; i++) { | ||||
| 						if (CompareGUID(guid, &DriveLayout->PartitionEntry[i].Gpt.PartitionId)) { | ||||
| 							found = TRUE; | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 					if (found) | ||||
| 						break; | ||||
| 				} | ||||
| 			} | ||||
| 			if (j > MAX_ESP_TOGGLE) | ||||
| 				goto out; | ||||
| 			DriveLayout->PartitionEntry[i].Gpt.PartitionType = PARTITION_GENERIC_ESP; | ||||
| 		} | ||||
| 	} else { | ||||
| 		for (i = 0; i < (int)DriveLayout->PartitionCount; i++) { | ||||
| 		for (i = 0, j = 0; i < DriveLayout->PartitionCount; i++) { | ||||
| 			if (DriveLayout->PartitionEntry[i].StartingOffset.QuadPart == PartitionOffset) { | ||||
| 				esp_index = i; | ||||
| 				if (DriveLayout->PartitionStyle == PARTITION_STYLE_GPT) | ||||
| 					DriveLayout->PartitionEntry[esp_index].Gpt.PartitionType = PARTITION_GENERIC_ESP; | ||||
| 				else if (DriveLayout->PartitionStyle == PARTITION_STYLE_MBR) | ||||
| 					DriveLayout->PartitionEntry[esp_index].Mbr.PartitionType = 0xef; | ||||
| 				DriveLayout->PartitionEntry[i].Gpt.PartitionType = PARTITION_GENERIC_ESP; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	if (esp_index < 0) { | ||||
| 	if (i >= DriveLayout->PartitionCount) { | ||||
| 		uprintf("No partition to toggle"); | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
| 	DriveLayout->PartitionEntry[esp_index].RewritePartition = TRUE;	// Just in case
 | ||||
| 	r = DeviceIoControl(hPhysical, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)DriveLayout, dl_size, NULL, 0, &dl_size, NULL); | ||||
| 	DriveLayout->PartitionEntry[i].RewritePartition = TRUE;	// Just in case
 | ||||
| 	r = DeviceIoControl(hPhysical, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)DriveLayout, size, NULL, 0, &size, NULL); | ||||
| 	if (!r) { | ||||
| 		uprintf("Could not set drive layout: %s", WindowsErrorString()); | ||||
| 		goto out; | ||||
| 	} | ||||
| 	RefreshDriveLayout(hPhysical); | ||||
| 	if (PartitionOffset == 0) { | ||||
| 		if (delete_data) { | ||||
| 		if (CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_GENERIC_ESP)) { | ||||
| 			// We successfully reverted ESP from Basic Data -> Delete stored ESP info
 | ||||
| 			ClearEspInfo((uint8_t)j); | ||||
| 		} else if (!IsDriveLetterInUse(*mount_point)) { | ||||
| 			// We successfully switched ESP to Basic Data -> Try to mount it
 | ||||
| 			volume_name = GetLogicalName(DriveIndex, DriveLayout->PartitionEntry[esp_index].StartingOffset.QuadPart, TRUE, FALSE); | ||||
| 			volume_name = GetLogicalName(DriveIndex, DriveLayout->PartitionEntry[i].StartingOffset.QuadPart, TRUE, FALSE); | ||||
| 			IGNORE_RETVAL(MountVolume(mount_point, volume_name)); | ||||
| 			free(volume_name); | ||||
| 		} | ||||
|  | @ -1714,8 +1639,7 @@ out: | |||
| } | ||||
| 
 | ||||
| // This is a crude attempt at detecting file systems through their superblock magic.
 | ||||
| // Note that we only attempt to detect the file systems that Rufus can format as
 | ||||
| // well as a couple other maintsream ones.
 | ||||
| // Note that we only attempt to detect the file systems that Rufus can actually format.
 | ||||
| const char* GetFsName(HANDLE hPhysical, LARGE_INTEGER StartingOffset) | ||||
| { | ||||
| 	typedef struct { | ||||
|  | @ -1789,7 +1713,7 @@ const char* GetFsName(HANDLE hPhysical, LARGE_INTEGER StartingOffset) | |||
| 		goto out; | ||||
| 	} | ||||
| 	// Switch to offset 1024
 | ||||
| 	memset(buf, 0, sector_size); | ||||
| 	memset(buf, sector_size, 0); | ||||
| 	StartingOffset.QuadPart += 0x0400ULL; | ||||
| 	if (!SetFilePointerEx(hPhysical, StartingOffset, NULL, FILE_BEGIN)) | ||||
| 		goto out; | ||||
|  | @ -1824,7 +1748,7 @@ const char* GetFsName(HANDLE hPhysical, LARGE_INTEGER StartingOffset) | |||
| 	// 4. Try to detect UDF through by looking for a "BEA01\0" string at offset 0xC001
 | ||||
| 	// NB: This is not thorough UDF detection but good enough for our purpose.
 | ||||
| 	// For the full specs see: http://www.osta.org/specs/pdf/udf260.pdf
 | ||||
| 	memset(buf, 0, sector_size); | ||||
| 	memset(buf, sector_size, 0); | ||||
| 	StartingOffset.QuadPart += 0x8000ULL - 0x0400ULL; | ||||
| 	if (!SetFilePointerEx(hPhysical, StartingOffset, NULL, FILE_BEGIN)) | ||||
| 		goto out; | ||||
|  |  | |||
|  | @ -94,12 +94,7 @@ typedef struct _FILE_FS_DEVICE_INFORMATION { | |||
| 	ULONG Characteristics; | ||||
| } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; | ||||
| #else | ||||
| /*
 | ||||
|  * MinGW is currently missing most of the VDS COM stuff. | ||||
|  * Oh, and MinGW's vds.h is screwed up unless you define the following: | ||||
|  */ | ||||
| #define VDS_LUN_INFORMATION void | ||||
| #define __vdslun_h__ | ||||
| /* MinGW is currently missing all the VDS COM stuff */ | ||||
| #include <vds.h> | ||||
| typedef interface IVdsServiceLoader IVdsServiceLoader; | ||||
| typedef interface IVdsService IVdsService; | ||||
|  | @ -418,5 +413,4 @@ BOOL CyclePort(int index); | |||
| int CycleDevice(int index); | ||||
| BOOL RefreshLayout(DWORD DriveIndex); | ||||
| BOOL GetOpticalMedia(IMG_SAVE* img_save); | ||||
| uint64_t GetEspOffset(DWORD DriveIndex); | ||||
| BOOL ToggleEsp(DWORD DriveIndex, uint64_t PartitionOffset); | ||||
|  |  | |||
							
								
								
									
										55
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										55
									
								
								src/format.c
									
										
									
									
									
								
							|  | @ -31,9 +31,7 @@ | |||
| #include <ctype.h> | ||||
| #include <locale.h> | ||||
| #include <assert.h> | ||||
| #if !defined(__MINGW32__) | ||||
| #include <vds.h> | ||||
| #endif | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "missing.h" | ||||
|  | @ -1872,8 +1870,6 @@ DWORD WINAPI FormatThread(void* param) | |||
| 	char drive_letters[27], fs_name[32], label[64]; | ||||
| 	char logfile[MAX_PATH], *userdir; | ||||
| 	char efi_dst[] = "?:\\efi\\boot\\bootx64.efi"; | ||||
| 	char appraiserres_dll_src[] = "?:\\sources\\appraiserres.dll"; | ||||
| 	char appraiserres_dll_dst[] = "?:\\sources\\appraiserres.bak"; | ||||
| 	char kolibri_dst[] = "?:\\MTLD_F32"; | ||||
| 	char grub4dos_dst[] = "?:\\grldr"; | ||||
| 
 | ||||
|  | @ -2064,6 +2060,23 @@ DWORD WINAPI FormatThread(void* param) | |||
| 	// Write an image file
 | ||||
| 	if ((boot_type == BT_IMAGE) && write_as_image) { | ||||
| 		WriteDrive(hPhysicalDrive, FALSE); | ||||
| 
 | ||||
| 		// Trying to mount accessible partitions after writing an image leads to the
 | ||||
| 		// creation of the infamous 'System Volume Information' folder on ESPs, which
 | ||||
| 		// in turn leads to checksum errors for Ubuntu's boot/grub/efi.img (that maps
 | ||||
| 		// to the Ubuntu ESP). So we only call the code below for Ventoy's vtsi images.
 | ||||
| 		if (img_report.compression_type == BLED_COMPRESSION_VTSI) { | ||||
| 			// If the image contains a partition we might be able to access, try to re-mount it
 | ||||
| 			safe_unlockclose(hPhysicalDrive); | ||||
| 			safe_unlockclose(hLogicalVolume); | ||||
| 			Sleep(200); | ||||
| 			WaitForLogical(DriveIndex, 0); | ||||
| 			if (GetDrivePartitionData(SelectedDrive.DeviceNumber, fs_name, sizeof(fs_name), TRUE)) { | ||||
| 				volume_name = GetLogicalName(DriveIndex, 0, TRUE, TRUE); | ||||
| 				if ((volume_name != NULL) && (MountVolume(drive_name, volume_name))) | ||||
| 					uprintf("Remounted %s as %c:", volume_name, toupper(drive_name[0])); | ||||
| 			} | ||||
| 		} | ||||
| 		goto out; | ||||
| 	} | ||||
| 
 | ||||
|  | @ -2345,18 +2358,6 @@ DWORD WINAPI FormatThread(void* param) | |||
| 						FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_CANT_PATCH); | ||||
| 				} | ||||
| 				if (ComboBox_GetCurItemData(hImageOption) == IMOP_WIN_EXTENDED) { | ||||
| 					// Create a backup of sources\appraiserres.dll and then create an empty file to
 | ||||
| 					// allow in-place upgrades without TPM/SB. Note that we need to create an empty,
 | ||||
| 					// appraiserres.dll otherwise setup.exe extracts its own.
 | ||||
| 					appraiserres_dll_src[0] = drive_name[0]; | ||||
| 					appraiserres_dll_dst[0] = drive_name[0]; | ||||
| 					uprintf("Renaming: '%s' → '%s'", appraiserres_dll_src, appraiserres_dll_dst); | ||||
| 					if (!MoveFileExU(appraiserres_dll_src, appraiserres_dll_dst, MOVEFILE_REPLACE_EXISTING)) | ||||
| 						uprintf("  Rename failed: %s", WindowsErrorString()); | ||||
| 					else | ||||
| 						CloseHandle(CreateFileU(appraiserres_dll_src, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, | ||||
| 							NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)); | ||||
| 					// Now patch for boot-time TPM/SB checks.
 | ||||
| 					if (!RemoveWindows11Restrictions(drive_name[0])) | ||||
| 						FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_PATCH); | ||||
| 				} | ||||
|  | @ -2386,27 +2387,13 @@ out: | |||
| 		AltUnmountVolume(volume_name, TRUE); | ||||
| 	else | ||||
| 		safe_free(volume_name); | ||||
| 	if ((boot_type == BT_IMAGE) && write_as_image) { | ||||
| 		PrintInfo(0, MSG_320, lmprintf(MSG_307)); | ||||
| 		VdsRescan(VDS_RESCAN_REFRESH, 0, TRUE); | ||||
| 	} | ||||
| 	safe_free(buffer); | ||||
| 	safe_unlockclose(hLogicalVolume); | ||||
| 	safe_unlockclose(hPhysicalDrive);	// This can take a while
 | ||||
| 	if ((boot_type == BT_IMAGE) && write_as_image) { | ||||
| 		PrintInfo(0, MSG_320, lmprintf(MSG_307)); | ||||
| 		Sleep(200); | ||||
| 		VdsRescan(VDS_RESCAN_REFRESH, 0, TRUE); | ||||
| 		// Trying to mount accessible partitions after writing an image leads to the
 | ||||
| 		// creation of the infamous 'System Volume Information' folder on ESPs, which
 | ||||
| 		// in turn leads to checksum errors for Ubuntu's boot/grub/efi.img (that maps
 | ||||
| 		// to the Ubuntu ESP). So we only call the code below if there are no ESPs or
 | ||||
| 		// if we're running a Ventoy image.
 | ||||
| 		if ((GetEspOffset(DriveIndex) == 0) || (img_report.compression_type == BLED_COMPRESSION_VTSI)) { | ||||
| 			WaitForLogical(DriveIndex, 0); | ||||
| 			if (GetDrivePartitionData(SelectedDrive.DeviceNumber, fs_name, sizeof(fs_name), TRUE)) { | ||||
| 				volume_name = GetLogicalName(DriveIndex, 0, TRUE, TRUE); | ||||
| 				if ((volume_name != NULL) && (MountVolume(drive_name, volume_name))) | ||||
| 					uprintf("Remounted %s as %c:", volume_name, toupper(drive_name[0])); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	if (IS_ERROR(FormatStatus)) { | ||||
| 		volume_name = GetLogicalName(DriveIndex, partition_offset[PI_MAIN], TRUE, TRUE); | ||||
| 		if (volume_name != NULL) { | ||||
|  |  | |||
|  | @ -1557,7 +1557,6 @@ BOOL DumpFatDir(const char* path, int32_t cluster) | |||
| 	} | ||||
| 
 | ||||
| 	do { | ||||
| 		// coverity[-taint_source]
 | ||||
| 		dirpos.cluster = libfat_dumpdir(lf_fs, &dirpos, &diritem); | ||||
| 		if (dirpos.cluster >= 0) { | ||||
| 			name = wchar_to_utf8(diritem.name); | ||||
|  |  | |||
|  | @ -165,7 +165,7 @@ mbr_type_t mbr_type[] = { | |||
| 	{ 0xec, "SkyFS" }, | ||||
| 	{ 0xed, "GPT Hybrid MBR" }, | ||||
| 	{ 0xee, "GPT Protective MBR" }, | ||||
| 	{ 0xef, "EFI System Partition" }, | ||||
| 	{ 0xef, "EFI FAT" }, | ||||
| 	{ 0xf0, "PA-RISC Boot" }, | ||||
| 	{ 0xf1, "SpeedStor" }, | ||||
| 	{ 0xf2, "DOS secondary" }, | ||||
|  |  | |||
							
								
								
									
										21
									
								
								src/net.c
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/net.c
									
										
									
									
									
								
							|  | @ -57,10 +57,6 @@ static DWORD error_code, fido_len = 0; | |||
| static BOOL force_update_check = FALSE; | ||||
| static const char* request_headers = "Accept-Encoding: gzip, deflate"; | ||||
| 
 | ||||
| #if defined(__MINGW32__) | ||||
| #define INetworkListManager_get_IsConnectedToInternet INetworkListManager_IsConnectedToInternet | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * FormatMessage does not handle internet errors | ||||
|  * https://docs.microsoft.com/en-us/windows/desktop/wininet/wininet-errors
 | ||||
|  | @ -271,18 +267,16 @@ static HINTERNET GetInternetSession(BOOL bRetry) | |||
| 	int i; | ||||
| 	char agent[64]; | ||||
| 	BOOL decodingSupport = TRUE; | ||||
| 	VARIANT_BOOL InternetConnection = VARIANT_FALSE; | ||||
| 	DWORD dwFlags, dwTimeout = NET_SESSION_TIMEOUT, dwProtocolSupport = HTTP_PROTOCOL_FLAG_HTTP2; | ||||
| 	DWORD dwTimeout = NET_SESSION_TIMEOUT, dwProtocolSupport = HTTP_PROTOCOL_FLAG_HTTP2; | ||||
| 	HINTERNET hSession = NULL; | ||||
| 	HRESULT hr = S_FALSE; | ||||
| 	INetworkListManager* pNetworkListManager; | ||||
| 	NLM_CONNECTIVITY Connectivity = NLM_CONNECTIVITY_DISCONNECTED; | ||||
| 
 | ||||
| 	PF_TYPE_DECL(WINAPI, HINTERNET, InternetOpenA, (LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD)); | ||||
| 	PF_TYPE_DECL(WINAPI, BOOL, InternetSetOptionA, (HINTERNET, DWORD, LPVOID, DWORD)); | ||||
| 	PF_TYPE_DECL(WINAPI, BOOL, InternetGetConnectedState, (LPDWORD, DWORD)); | ||||
| 	PF_INIT_OR_OUT(InternetOpenA, WinInet); | ||||
| 	PF_INIT_OR_OUT(InternetSetOptionA, WinInet); | ||||
| 	PF_INIT(InternetGetConnectedState, WinInet); | ||||
| 
 | ||||
| 	// Create a NetworkListManager Instance to check the network connection
 | ||||
| 	IGNORE_RETVAL(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE)); | ||||
|  | @ -290,20 +284,13 @@ static HINTERNET GetInternetSession(BOOL bRetry) | |||
| 		&IID_INetworkListManager, (LPVOID*)&pNetworkListManager); | ||||
| 	if (hr == S_OK) { | ||||
| 		for (i = 0; i <= WRITE_RETRIES; i++) { | ||||
| 			hr = INetworkListManager_get_IsConnectedToInternet(pNetworkListManager, &InternetConnection); | ||||
| 			// INetworkListManager may fail with ERROR_SERVICE_DEPENDENCY_FAIL if the DHCP service
 | ||||
| 			// is not running, in which case we must fall back to using InternetGetConnectedState().
 | ||||
| 			// See https://github.com/pbatard/rufus/issues/1801.
 | ||||
| 			if ((hr == HRESULT_FROM_WIN32(ERROR_SERVICE_DEPENDENCY_FAIL)) && (pfInternetGetConnectedState != NULL)) { | ||||
| 				InternetConnection = pfInternetGetConnectedState(&dwFlags, 0) ? VARIANT_TRUE : VARIANT_FALSE; | ||||
| 				break; | ||||
| 			} | ||||
| 			hr = INetworkListManager_GetConnectivity(pNetworkListManager, &Connectivity); | ||||
| 			if (hr == S_OK || !bRetry) | ||||
| 				break; | ||||
| 			Sleep(1000); | ||||
| 		} | ||||
| 	} | ||||
| 	if (InternetConnection == VARIANT_FALSE) { | ||||
| 	if (Connectivity == NLM_CONNECTIVITY_DISCONNECTED) { | ||||
| 		SetLastError(ERROR_INTERNET_DISCONNECTED); | ||||
| 		goto out; | ||||
| 	} | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| /*
 | ||||
|  * Rufus: The Reliable USB Formatting Utility | ||||
|  * PKI functions (code signing, etc.) | ||||
|  * Copyright © 2015-2022 Pete Batard <pete@akeo.ie> | ||||
|  * Copyright © 2015-2016 Pete Batard <pete@akeo.ie> | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  | @ -572,11 +572,9 @@ out: | |||
| // From https://msdn.microsoft.com/en-us/library/windows/desktop/aa382384.aspx
 | ||||
| LONG ValidateSignature(HWND hDlg, const char* path) | ||||
| { | ||||
| 	LONG r = TRUST_E_SYSTEM_ERROR; | ||||
| 	LONG r; | ||||
| 	WINTRUST_DATA trust_data = { 0 }; | ||||
| 	WINTRUST_FILE_INFO trust_file = { 0 }; | ||||
| 	PF_TYPE_DECL(WINAPI, long, WinVerifyTrustEx, (HWND, GUID*, WINTRUST_DATA*)); | ||||
| 	PF_INIT(WinVerifyTrustEx, WinTrust); | ||||
| 	GUID guid_generic_verify =	// WINTRUST_ACTION_GENERIC_VERIFY_V2
 | ||||
| 		{ 0xaac56b, 0xcd44, 0x11d0,{ 0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee } }; | ||||
| 	char *signature_name; | ||||
|  | @ -627,8 +625,7 @@ LONG ValidateSignature(HWND hDlg, const char* path) | |||
| 	trust_data.dwUnionChoice = WTD_CHOICE_FILE; | ||||
| 	trust_data.pFile = &trust_file; | ||||
| 
 | ||||
| 	if (pfWinVerifyTrustEx != NULL) | ||||
| 		r = pfWinVerifyTrustEx(INVALID_HANDLE_VALUE, &guid_generic_verify, &trust_data); | ||||
| 	r = WinVerifyTrustEx(INVALID_HANDLE_VALUE, &guid_generic_verify, &trust_data); | ||||
| 	safe_free(trust_file.pcwszFilePath); | ||||
| 	switch (r) { | ||||
| 	case ERROR_SUCCESS: | ||||
|  |  | |||
|  | @ -1168,8 +1168,7 @@ static void UpdateImage(BOOL update_image_option_only) | |||
| 	ComboBox_ResetContent(hImageOption); | ||||
| 
 | ||||
| 	if (!img_report.is_windows_img) {	// Straight install.wim/install.esd only have Windows To Go option
 | ||||
| 		// Can't remove restrictions if running on Windows 7 or when running the appstore version
 | ||||
| 		if (nWindowsVersion >= WINDOWS_8 && !appstore_version && img_report.win_version.major == 11) { | ||||
| 		if (img_report.win_version.major == 11) { | ||||
| 			IGNORE_RETVAL(ComboBox_SetItemData(hImageOption, ComboBox_AddStringU(hImageOption, lmprintf(MSG_322)), IMOP_WIN_STANDARD)); | ||||
| 			IGNORE_RETVAL(ComboBox_SetItemData(hImageOption, ComboBox_AddStringU(hImageOption, lmprintf(MSG_323)), IMOP_WIN_EXTENDED)); | ||||
| 		} else { | ||||
|  | @ -1268,7 +1267,6 @@ DWORD WINAPI ImageScanThread(LPVOID param) | |||
| 		"^OL-8.*",				// Oracle Linux 8.x
 | ||||
| 		"^RHEL-8.*",			// Red Hat 8.x
 | ||||
| 		"^Rocky-8.*",			// Rocky Linux 8.x
 | ||||
| 		"^MIRACLE-LINUX-8-.*",	// MIRACLE LINUX 8.x
 | ||||
| 	}; | ||||
| 	int i, len; | ||||
| 	uint8_t arch; | ||||
|  |  | |||
							
								
								
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | |||
| IDD_DIALOG DIALOGEX 12, 12, 232, 326 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_ACCEPTFILES | ||||
| CAPTION "Rufus 3.19.1878" | ||||
| CAPTION "Rufus 3.18.1867" | ||||
| FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | ||||
| BEGIN | ||||
|     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP | ||||
|  | @ -395,8 +395,8 @@ END | |||
| // | ||||
| 
 | ||||
| VS_VERSION_INFO VERSIONINFO | ||||
|  FILEVERSION 3,19,1878,0 | ||||
|  PRODUCTVERSION 3,19,1878,0 | ||||
|  FILEVERSION 3,18,1867,0 | ||||
|  PRODUCTVERSION 3,18,1867,0 | ||||
|  FILEFLAGSMASK 0x3fL | ||||
| #ifdef _DEBUG | ||||
|  FILEFLAGS 0x1L | ||||
|  | @ -414,13 +414,13 @@ BEGIN | |||
|             VALUE "Comments", "https://rufus.ie" | ||||
|             VALUE "CompanyName", "Akeo Consulting" | ||||
|             VALUE "FileDescription", "Rufus" | ||||
|             VALUE "FileVersion", "3.19.1878" | ||||
|             VALUE "FileVersion", "3.18.1867" | ||||
|             VALUE "InternalName", "Rufus" | ||||
|             VALUE "LegalCopyright", "© 2011-2022 Pete Batard (GPL v3)" | ||||
|             VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" | ||||
|             VALUE "OriginalFilename", "rufus-3.19.exe" | ||||
|             VALUE "OriginalFilename", "rufus-3.18.exe" | ||||
|             VALUE "ProductName", "Rufus" | ||||
|             VALUE "ProductVersion", "3.19.1878" | ||||
|             VALUE "ProductVersion", "3.18.1867" | ||||
|         END | ||||
|     END | ||||
|     BLOCK "VarFileInfo" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue