From 4223fe9681802628cd9090dd79bd81d22fd01aed Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Fri, 11 Feb 2022 18:42:38 +0000 Subject: [PATCH 01/11] [misc] fix inverted memset() parameters * Also fix artifact name for VS2022 builds. --- .github/workflows/vs2022.yml | 2 +- src/drive.c | 7 ++++--- src/rufus.rc | 10 +++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/vs2022.yml b/.github/workflows/vs2022.yml index 488bc216..df98e554 100644 --- a/.github/workflows/vs2022.yml +++ b/.github/workflows/vs2022.yml @@ -80,5 +80,5 @@ jobs: uses: actions/upload-artifact@v2 if: ${{ github.event_name == 'push' }} with: - name: VS2019 + name: VS2022 path: ./*.exe diff --git a/src/drive.c b/src/drive.c index f1079b96..ee715676 100644 --- a/src/drive.c +++ b/src/drive.c @@ -1639,7 +1639,8 @@ 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 actually format. +// Note that we only attempt to detect the file systems that Rufus can format as +// well as a couple other maintsream ones. const char* GetFsName(HANDLE hPhysical, LARGE_INTEGER StartingOffset) { typedef struct { @@ -1713,7 +1714,7 @@ const char* GetFsName(HANDLE hPhysical, LARGE_INTEGER StartingOffset) goto out; } // Switch to offset 1024 - memset(buf, sector_size, 0); + memset(buf, 0, sector_size); StartingOffset.QuadPart += 0x0400ULL; if (!SetFilePointerEx(hPhysical, StartingOffset, NULL, FILE_BEGIN)) goto out; @@ -1748,7 +1749,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, sector_size, 0); + memset(buf, 0, sector_size); StartingOffset.QuadPart += 0x8000ULL - 0x0400ULL; if (!SetFilePointerEx(hPhysical, StartingOffset, NULL, FILE_BEGIN)) goto out; diff --git a/src/rufus.rc b/src/rufus.rc index 7c87f66c..0e3c2618 100644 --- a/src/rufus.rc +++ b/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.18.1867" +CAPTION "Rufus 3.18.1868" 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,18,1867,0 - PRODUCTVERSION 3,18,1867,0 + FILEVERSION 3,18,1868,0 + PRODUCTVERSION 3,18,1868,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.18.1867" + VALUE "FileVersion", "3.18.1868" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1867" + VALUE "ProductVersion", "3.18.1868" END END BLOCK "VarFileInfo" From 108424ecf41f3164924bd37d9d0e56933c146b1b Mon Sep 17 00:00:00 2001 From: Tatsuhito KATO Date: Sun, 30 Jan 2022 17:02:54 +0900 Subject: [PATCH 02/11] [loc] update Japanese translation * Closes #1863 --- res/loc/po/ja-JP.po | 6 +++--- res/loc/rufus.loc | 6 +++--- src/rufus.rc | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/res/loc/po/ja-JP.po b/res/loc/po/ja-JP.po index 056c3358..9256e8b2 100644 --- a/res/loc/po/ja-JP.po +++ b/res/loc/po/ja-JP.po @@ -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" diff --git a/res/loc/rufus.loc b/res/loc/rufus.loc index 4fe4bd63..992776a1 100644 --- a/res/loc/rufus.loc +++ b/res/loc/rufus.loc @@ -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)..." diff --git a/src/rufus.rc b/src/rufus.rc index 0e3c2618..83089d0c 100644 --- a/src/rufus.rc +++ b/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.18.1868" +CAPTION "Rufus 3.18.1869" 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,18,1868,0 - PRODUCTVERSION 3,18,1868,0 + FILEVERSION 3,18,1869,0 + PRODUCTVERSION 3,18,1869,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.18.1868" + VALUE "FileVersion", "3.18.1869" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1868" + VALUE "ProductVersion", "3.18.1869" END END BLOCK "VarFileInfo" From 23e79ad9070cc9c59227ba1f8225c462163d9e75 Mon Sep 17 00:00:00 2001 From: Matthias Kruk Date: Wed, 9 Feb 2022 10:16:34 +0900 Subject: [PATCH 03/11] [iso] add Miracle Linux 8 to the list of Red Hat exceptions * MIRACLE LINUX is a Red Hat derivative, so it needs the same special treatment as Red Hat, CentOS, etc to work around issues in anaconda. * This commit adds MIRACLE LINUX to the list of Red Hat derivatives. * Closes #1866 --- src/rufus.c | 1 + src/rufus.rc | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/rufus.c b/src/rufus.c index ff72eb2b..2ff45b52 100755 --- a/src/rufus.c +++ b/src/rufus.c @@ -1267,6 +1267,7 @@ 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; diff --git a/src/rufus.rc b/src/rufus.rc index 83089d0c..990176f9 100644 --- a/src/rufus.rc +++ b/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.18.1869" +CAPTION "Rufus 3.18.1870" 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,18,1869,0 - PRODUCTVERSION 3,18,1869,0 + FILEVERSION 3,18,1870,0 + PRODUCTVERSION 3,18,1870,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.18.1869" + VALUE "FileVersion", "3.18.1870" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1869" + VALUE "ProductVersion", "3.18.1870" END END BLOCK "VarFileInfo" From 209fb18b1c06dc169cfddb62faed509318c75876 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Wed, 16 Feb 2022 17:25:43 +0000 Subject: [PATCH 04/11] [iso] add bypass of Windows 11 restrictions for in-place upgrades --- src/format.c | 14 ++++++++++++++ src/rufus.rc | 10 +++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/format.c b/src/format.c index d77e2e75..f42dee37 100644 --- a/src/format.c +++ b/src/format.c @@ -1870,6 +1870,8 @@ 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"; @@ -2358,6 +2360,18 @@ 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); } diff --git a/src/rufus.rc b/src/rufus.rc index 990176f9..920f5467 100644 --- a/src/rufus.rc +++ b/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.18.1870" +CAPTION "Rufus 3.18.1871" 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,18,1870,0 - PRODUCTVERSION 3,18,1870,0 + FILEVERSION 3,18,1871,0 + PRODUCTVERSION 3,18,1871,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.18.1870" + VALUE "FileVersion", "3.18.1871" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1870" + VALUE "ProductVersion", "3.18.1871" END END BLOCK "VarFileInfo" From 89db56acbc607f13746b5a46fef59a5108764ba5 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Fri, 18 Feb 2022 17:18:34 +0000 Subject: [PATCH 05/11] [net] add fallback to InternetGetConnectedState() when INetworkListManager service dependencies are missing * INetworkListManager appears to depend on specific services to be able to work, which one can actually disable while still getting full Internet connectivity. * If that is the case, HRESULT_FROM_WIN32(ERROR_SERVICE_DEPENDENCY_FAIL) will be returned, therefore we add a fallback to using InternetGetConnectedState(), which does not have such dependencies (but has other limitations per b2492908bee869932e0707ccdd85a2b3e6a2b982) when we detect a dependency error. * Also take this opportunity to switch to using INetworkListManager::get_IsConnectedToInternet(). * Also fix Coverity breakage due to Synopsys having upgraded their toolchain. * Closes #1801 --- .github/workflows/coverity.yml | 4 +++- src/net.c | 21 +++++++++++++++++---- src/rufus.rc | 10 +++++----- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 91600e51..b9010753 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -49,7 +49,9 @@ jobs: msbuild-architecture: x64 - name: Build with Coverity - run: cov-build.exe --dir cov-int msbuild ${{ env.SOLUTION_FILE_PATH }} /m /p:Configuration=${{ env.BUILD_CONFIGURATION }},Platform=${{ env.TARGET_PLATFORM }} + 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 }} - name: Publish Coverity artifacts uses: actions/upload-artifact@v2 diff --git a/src/net.c b/src/net.c index ee7a71a4..508a62ea 100644 --- a/src/net.c +++ b/src/net.c @@ -57,6 +57,10 @@ 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 @@ -267,16 +271,18 @@ static HINTERNET GetInternetSession(BOOL bRetry) int i; char agent[64]; BOOL decodingSupport = TRUE; - DWORD dwTimeout = NET_SESSION_TIMEOUT, dwProtocolSupport = HTTP_PROTOCOL_FLAG_HTTP2; + VARIANT_BOOL InternetConnection = VARIANT_FALSE; + DWORD dwFlags, 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)); @@ -284,13 +290,20 @@ static HINTERNET GetInternetSession(BOOL bRetry) &IID_INetworkListManager, (LPVOID*)&pNetworkListManager); if (hr == S_OK) { for (i = 0; i <= WRITE_RETRIES; i++) { - hr = INetworkListManager_GetConnectivity(pNetworkListManager, &Connectivity); + 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; + } if (hr == S_OK || !bRetry) break; Sleep(1000); } } - if (Connectivity == NLM_CONNECTIVITY_DISCONNECTED) { + if (InternetConnection == VARIANT_FALSE) { SetLastError(ERROR_INTERNET_DISCONNECTED); goto out; } diff --git a/src/rufus.rc b/src/rufus.rc index 920f5467..3ae8ba27 100644 --- a/src/rufus.rc +++ b/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.18.1871" +CAPTION "Rufus 3.18.1872" 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,18,1871,0 - PRODUCTVERSION 3,18,1871,0 + FILEVERSION 3,18,1872,0 + PRODUCTVERSION 3,18,1872,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.18.1871" + VALUE "FileVersion", "3.18.1872" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1871" + VALUE "ProductVersion", "3.18.1872" END END BLOCK "VarFileInfo" From 42483d23ed478b8fc8639d64a4047becfa9ab89e Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Mon, 21 Feb 2022 20:02:53 +0000 Subject: [PATCH 06/11] [dos] update FreeDOS to version 1.3 * FreeDOS 1.3 has just been released. Yay! :) * Closes #1740 * Also addresses 2 warnings reported by Coverity. --- res/freedos/COMMAND.COM | Bin 66945 -> 85480 bytes res/freedos/DISPLAY.EXE | Bin 3651 -> 3657 bytes res/freedos/KERNEL.SYS | Bin 46685 -> 46256 bytes res/freedos/readme.txt | 30 ++++++++++-------------------- src/dos.c | 1 - src/iso.c | 1 + src/rufus.rc | 10 +++++----- 7 files changed, 16 insertions(+), 26 deletions(-) diff --git a/res/freedos/COMMAND.COM b/res/freedos/COMMAND.COM index 4a301682b6e8593a678960dc5bf671cd18317db2..f56ace7e862ce6669af4faa0854c09cefb3897fe 100644 GIT binary patch literal 85480 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

WZJjM75+7(-y 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 NT+?sQ6hGGRKLJbyG0y-1 delta 42176 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 diff --git a/res/freedos/DISPLAY.EXE b/res/freedos/DISPLAY.EXE index 9a0d98c99fab4df73b8e475398a33f148797168d..0b6b388d599f93ca82dd9995bcae4c8d986d4a2f 100644 GIT binary patch delta 1806 zcmW-i{aaG^0>IA!K@>rI5lx()y7;z4@RnU_r_3bFQu8Ivx1|WEBrgumfvkCtZr7%@ zt@X5BcWd1{Tk~;Sc1bN2EmBfvWlJ-&nAxiJK#6G@Xe!@(pFTf)p3i^qG5PoV2PJ05 zLo^76ND#vl0HNpq;~oC*`~+&ZQm@`Q5fu6tH>l%yMfy!BJvnnVgG_es*-a-O3q%`2 zW}%%7XvZuBeQ~i=PbFBc>FFt7kz7OG{N|v+0FF~jrNTXF01?KgB`3sW0YocRMN*ZIIu97eM`R&x!>PLI>PK!O_o3Yy#&TzN*=)W%-z|o@Qiu z;T{9a0EdtA^(2h+Mo&E}_Bwzb{U%q)Uf(?iA{Z#3>L>=%%)IGEmZNLU*bJlHcoLcTf^qadKp;`*BkU3Tb4qcz5mAg`BdTEo?vR`QtG~*509cr7Gjffgpy>CHJ z`JCF6td&qaZv>t7+-9zvPt}zKb{)2|Ai9K9&a%2gMoMtR58X6i86?k{EKxvSjWzF# zIyYIHQL;&pvoCO+zHw)JObWaq^|FY%@HyzqYc25viS>43z#cMyyj@{)PB6>? z4Z+9ETNd2_@YYZbiW%#yVk_^<<`*t`6E222;<-y3PxVvMo}F{?Ml#%(bSwVmXha{qQszc|l&Mr()*_(KdMZ6h1h%0A2R|l_CY;+SP$0~XJ0jnUbVZ}95}6O`LG!Bxw7ny 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 diff --git a/res/freedos/KERNEL.SYS b/res/freedos/KERNEL.SYS index 9ce38b198a9e97af56137c4a238792f41c0fee9a..6b524a99481f2286a5ddcb06c4fbccfe2bc5cfbd 100644 GIT binary patch literal 46256 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 diff --git a/res/freedos/readme.txt b/res/freedos/readme.txt index 44048d09..4064bc18 100644 --- a/res/freedos/readme.txt +++ b/res/freedos/readme.txt @@ -1,21 +1,11 @@ -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 +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) It was modified to have FORCELBA enabled (byte offset 0x0D set to 0x01) - -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 +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 diff --git a/src/dos.c b/src/dos.c index 245890fe..010c8692 100644 --- a/src/dos.c +++ b/src/dos.c @@ -65,7 +65,6 @@ typedef struct _TIME_FIELDS { short Minute; short Second; short Milliseconds; - short Weekday; } TIME_FIELDS, *PTIME_FIELDS; #define ARGUMENT_PRESENT(ArgumentPointer) \ diff --git a/src/iso.c b/src/iso.c index c987dc82..93a60566 100644 --- a/src/iso.c +++ b/src/iso.c @@ -1557,6 +1557,7 @@ 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); diff --git a/src/rufus.rc b/src/rufus.rc index 3ae8ba27..6ee30c8c 100644 --- a/src/rufus.rc +++ b/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.18.1872" +CAPTION "Rufus 3.18.1873" 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,18,1872,0 - PRODUCTVERSION 3,18,1872,0 + FILEVERSION 3,18,1873,0 + PRODUCTVERSION 3,18,1873,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.18.1872" + VALUE "FileVersion", "3.18.1873" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1872" + VALUE "ProductVersion", "3.18.1873" END END BLOCK "VarFileInfo" From cef651c52cff9e88b405e7b8159540eab3b49ee8 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Fri, 25 Feb 2022 18:05:49 +0000 Subject: [PATCH 07/11] [msvc] actually apply DLL delay loading to the Release builds * ef2ff7179d09a7d1ac9e9943d901bd823e422958 was supposed to apply delay loading to our DLLs, for all MSVC builds, thereby preventing sideloading attacks, but the patch actually only set the DelayLoadDLLs property for Debug builds and not Release builds, with the result that side loading could still be triggered for the Release executables, as demonstrated in #1877. * This patch therefore properly sets the DelayLoadDLLs for all builds, which should take care of the side loading vulnerability at least for MSVC executables. * A subsequent patch will still be needed for MinGW, since there is no equivalent to DelayLoadDLLs. * This addresses part of #1877. --- .vs/rufus.vcxproj | 12 ++++++++---- src/rufus.rc | 10 +++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.vs/rufus.vcxproj b/.vs/rufus.vcxproj index e835f758..4c967a5a 100644 --- a/.vs/rufus.vcxproj +++ b/.vs/rufus.vcxproj @@ -244,12 +244,13 @@ true - 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) + advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies) RequireAdministrator false Windows MachineX86 /BREPRO %(AdditionalOptions) + advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -271,12 +272,13 @@ true - 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) + 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) RequireAdministrator false Windows C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm /BREPRO %(AdditionalOptions) + 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) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -300,12 +302,13 @@ true - 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) + 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) RequireAdministrator false Windows C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64 /BREPRO %(AdditionalOptions) + 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) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -332,12 +335,13 @@ true - 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) + advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies) RequireAdministrator false Windows MachineX64 /BREPRO %(AdditionalOptions) + advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) diff --git a/src/rufus.rc b/src/rufus.rc index 6ee30c8c..19c6dcaf 100644 --- a/src/rufus.rc +++ b/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.18.1873" +CAPTION "Rufus 3.18.1874" 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,18,1873,0 - PRODUCTVERSION 3,18,1873,0 + FILEVERSION 3,18,1874,0 + PRODUCTVERSION 3,18,1874,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.18.1873" + VALUE "FileVersion", "3.18.1874" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1873" + VALUE "ProductVersion", "3.18.1874" END END BLOCK "VarFileInfo" From d07ec87b3acb9e5bd364c9d7c38d5a13cf644066 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Mon, 28 Feb 2022 22:00:41 +0000 Subject: [PATCH 08/11] [mingw] fix compilation breakage due to MinGW header screwup * See https://github.com/pbatard/rufus/actions/runs/1900092904 * Guys, I know VDS is fundamentally broken... but that's no reason to break it further! --- src/drive.c | 2 +- src/drive.h | 7 ++++++- src/format.c | 2 ++ src/rufus.rc | 10 +++++----- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/drive.c b/src/drive.c index ee715676..4e01f0f6 100644 --- a/src/drive.c +++ b/src/drive.c @@ -29,8 +29,8 @@ #include #if !defined(__MINGW32__) #include -#endif #include +#endif #include "rufus.h" #include "missing.h" diff --git a/src/drive.h b/src/drive.h index bb17929c..6506da75 100644 --- a/src/drive.h +++ b/src/drive.h @@ -94,7 +94,12 @@ typedef struct _FILE_FS_DEVICE_INFORMATION { ULONG Characteristics; } FILE_FS_DEVICE_INFORMATION, *PFILE_FS_DEVICE_INFORMATION; #else -/* MinGW is currently missing all the VDS COM stuff */ +/* + * 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__ #include typedef interface IVdsServiceLoader IVdsServiceLoader; typedef interface IVdsService IVdsService; diff --git a/src/format.c b/src/format.c index f42dee37..a3fcc63b 100644 --- a/src/format.c +++ b/src/format.c @@ -31,7 +31,9 @@ #include #include #include +#if !defined(__MINGW32__) #include +#endif #include "rufus.h" #include "missing.h" diff --git a/src/rufus.rc b/src/rufus.rc index 19c6dcaf..f68c751f 100644 --- a/src/rufus.rc +++ b/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.18.1874" +CAPTION "Rufus 3.18.1875" 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,18,1874,0 - PRODUCTVERSION 3,18,1874,0 + FILEVERSION 3,18,1875,0 + PRODUCTVERSION 3,18,1875,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.18.1874" + VALUE "FileVersion", "3.18.1875" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1874" + VALUE "ProductVersion", "3.18.1875" END END BLOCK "VarFileInfo" From 19472668370aacec0dba9dda306601cfc4a4ed7e Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Thu, 3 Mar 2022 17:41:43 +0000 Subject: [PATCH 09/11] [pki] don't link with wintrust.lib * WinTrust.lib is responsible for the MSASN1.dll sideloading issue described in #1877, so, since we only use it for WinVerifyTrustEx(), hook into that function manually. * Closes #1877 for the MinGW side. * Note that we will probably try to use the method suggested by @assarbad and documented at https://stackoverflow.com/questions/1851267/mingw-gcc-delay-loaded-dll-equivalent/70416894#70416894 to try to put an end to the problem of DLL side loading. --- .vs/rufus.vcxproj | 32 ++++++++++++++++---------------- ChangeLog.txt | 9 +++++++++ src/Makefile.am | 2 +- src/Makefile.in | 2 +- src/pki.c | 9 ++++++--- src/rufus.rc | 10 +++++----- 6 files changed, 38 insertions(+), 26 deletions(-) diff --git a/.vs/rufus.vcxproj b/.vs/rufus.vcxproj index 4c967a5a..792d4688 100644 --- a/.vs/rufus.vcxproj +++ b/.vs/rufus.vcxproj @@ -133,12 +133,12 @@ /utf-8 $(ExternalCompilerOptions) %(AdditionalOptions) - advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies) + advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies) RequireAdministrator true Windows MachineX86 - advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs) + advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -158,12 +158,12 @@ /utf-8 $(ExternalCompilerOptions) %(AdditionalOptions) - 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) + 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) RequireAdministrator true Windows C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm - 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) + 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) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -185,12 +185,12 @@ /utf-8 $(ExternalCompilerOptions) %(AdditionalOptions) - 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) + 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) RequireAdministrator true Windows C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64 - 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) + 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) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -217,12 +217,12 @@ /utf-8 $(ExternalCompilerOptions) %(AdditionalOptions) - advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies) + advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies) RequireAdministrator true Windows MachineX64 - advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs) + advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -244,13 +244,13 @@ true - advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies) + advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies) RequireAdministrator false Windows MachineX86 /BREPRO %(AdditionalOptions) - advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs) + advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -272,13 +272,13 @@ true - 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) + 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) RequireAdministrator false Windows C:\Program Files (x86)\Windows Kits\10\Lib\10.0.15063.0\um\arm /BREPRO %(AdditionalOptions) - 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) + 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) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -302,13 +302,13 @@ true - 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) + 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) RequireAdministrator false Windows C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64 /BREPRO %(AdditionalOptions) - 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) + 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) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) @@ -335,13 +335,13 @@ true - advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;wintrust.lib;%(AdditionalDependencies) + advapi32.lib;comctl32.lib;comdlg32.lib;crypt32.lib;gdi32.lib;ole32.lib;setupapi.lib;shell32.lib;shlwapi.lib;%(AdditionalDependencies) RequireAdministrator false Windows MachineX64 /BREPRO %(AdditionalOptions) - advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;wintrust.dll;%(DelayLoadDLLs) + advapi32.dll;comctl32.dll;comdlg32.dll;crypt32.dll;gdi32.dll;ole32.dll;setupapi.dll;shell32.dll;shlwapi.dll;%(DelayLoadDLLs) _UNICODE;UNICODE;RUFUS_LOC;%(PreprocessorDefinitions) diff --git a/ChangeLog.txt b/ChangeLog.txt index 046d7878..cfc6d792 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,12 @@ +o Version 3.18 (2022.03.??) + 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 diff --git a/src/Makefile.am b/src/Makefile.am index 1b08f20b..61a3ed58 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi + libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid -lpsapi diff --git a/src/Makefile.in b/src/Makefile.in index 5bc99641..42fe058a 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -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 -lwintrust -lcomdlg32 -lcomctl32 -luuid -lpsapi + libcdio/iso9660/libiso9660.a libcdio/udf/libudf.a libcdio/driver/libdriver.a -lsetupapi -lole32 -lgdi32 -lshlwapi -lcrypt32 -lcomdlg32 -lcomctl32 -luuid -lpsapi all: all-recursive diff --git a/src/pki.c b/src/pki.c index 251d6cb1..2764d2fa 100644 --- a/src/pki.c +++ b/src/pki.c @@ -1,7 +1,7 @@ /* * Rufus: The Reliable USB Formatting Utility * PKI functions (code signing, etc.) - * Copyright © 2015-2016 Pete Batard + * Copyright © 2015-2022 Pete Batard * * 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,9 +572,11 @@ out: // From https://msdn.microsoft.com/en-us/library/windows/desktop/aa382384.aspx LONG ValidateSignature(HWND hDlg, const char* path) { - LONG r; + LONG r = TRUST_E_SYSTEM_ERROR; 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; @@ -625,7 +627,8 @@ LONG ValidateSignature(HWND hDlg, const char* path) trust_data.dwUnionChoice = WTD_CHOICE_FILE; trust_data.pFile = &trust_file; - r = WinVerifyTrustEx(INVALID_HANDLE_VALUE, &guid_generic_verify, &trust_data); + if (pfWinVerifyTrustEx != NULL) + r = pfWinVerifyTrustEx(INVALID_HANDLE_VALUE, &guid_generic_verify, &trust_data); safe_free(trust_file.pcwszFilePath); switch (r) { case ERROR_SUCCESS: diff --git a/src/rufus.rc b/src/rufus.rc index f68c751f..4a3174e7 100644 --- a/src/rufus.rc +++ b/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.18.1875" +CAPTION "Rufus 3.18.1876" 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,18,1875,0 - PRODUCTVERSION 3,18,1875,0 + FILEVERSION 3,18,1876,0 + PRODUCTVERSION 3,18,1876,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.18.1875" + VALUE "FileVersion", "3.18.1876" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1875" + VALUE "ProductVersion", "3.18.1876" END END BLOCK "VarFileInfo" From 0de209ee5342b20d5538996c13df986b3fcc1089 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Fri, 11 Mar 2022 16:51:23 +0000 Subject: [PATCH 10/11] v3.18 (Build 1877) * Formally disable Windows 11 bypass for Windows 7 and AppStore version since it can't be applied. --- ChangeLog.txt | 2 +- res/appstore/packme.cmd | 1 - src/rufus.c | 3 ++- src/rufus.rc | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index cfc6d792..624746bc 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,4 +1,4 @@ -o Version 3.18 (2022.03.??) +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 diff --git a/res/appstore/packme.cmd b/res/appstore/packme.cmd index fd0c5ff8..0a57c945 100644 --- a/res/appstore/packme.cmd +++ b/res/appstore/packme.cmd @@ -25,7 +25,6 @@ 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 diff --git a/src/rufus.c b/src/rufus.c index 2ff45b52..a03266b0 100755 --- a/src/rufus.c +++ b/src/rufus.c @@ -1168,7 +1168,8 @@ 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 - if (img_report.win_version.major == 11) { + // 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) { 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 { diff --git a/src/rufus.rc b/src/rufus.rc index 4a3174e7..5c66e470 100644 --- a/src/rufus.rc +++ b/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.18.1876" +CAPTION "Rufus 3.18.1877" 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,18,1876,0 - PRODUCTVERSION 3,18,1876,0 + FILEVERSION 3,18,1877,0 + PRODUCTVERSION 3,18,1877,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.18.1876" + VALUE "FileVersion", "3.18.1877" 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.18.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1876" + VALUE "ProductVersion", "3.18.1877" END END BLOCK "VarFileInfo" From 8ec570570f36161f241ee0f30d0626e143819855 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Thu, 24 Mar 2022 17:24:39 +0000 Subject: [PATCH 11/11] [core] reassign a letter for drives written in DD mode that don't have an ESP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * This should help with the CoreELEC usage case described in #1842 * Also add MBR handling for ESP ↔ FAT cheat mode (Alt-P) * Also set rufus-next to 3.19 --- configure | 20 +++--- configure.ac | 2 +- src/drive.c | 175 ++++++++++++++++++++++++++++++++++-------------- src/drive.h | 1 + src/format.c | 39 +++++------ src/mbr_types.h | 2 +- src/rufus.rc | 12 ++-- 7 files changed, 162 insertions(+), 89 deletions(-) diff --git a/configure b/configure index 3ea2c16d..ba858bb7 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for rufus 3.18. +# Generated by GNU Autoconf 2.71 for rufus 3.19. # # Report bugs to . # @@ -611,8 +611,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='rufus' PACKAGE_TARNAME='rufus' -PACKAGE_VERSION='3.18' -PACKAGE_STRING='rufus 3.18' +PACKAGE_VERSION='3.19' +PACKAGE_STRING='rufus 3.19' 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.18 to adapt to many kinds of systems. +\`configure' configures rufus 3.19 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.18:";; + short | recursive ) echo "Configuration of rufus 3.19:";; 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.18 +rufus configure 3.19 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.18, which was +It was created by rufus $as_me 3.19, 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.18' + VERSION='3.19' 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.18, which was +This file was extended by rufus $as_me 3.19, 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.18 +rufus config.status 3.19 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 298d635b..32f061de 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([rufus], [3.18], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.ie]) +AC_INIT([rufus], [3.19], [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]) diff --git a/src/drive.c b/src/drive.c index 4e01f0f6..778c67d7 100644 --- a/src/drive.c +++ b/src/drive.c @@ -1487,6 +1487,43 @@ 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; @@ -1531,12 +1568,23 @@ static BOOL ClearEspInfo(uint8_t index) BOOL ToggleEsp(DWORD DriveIndex, uint64_t PartitionOffset) { char *volume_name, mount_point[] = DEFAULT_ESP_MOUNT_POINT; - BOOL r, ret = FALSE, found = FALSE; + int i, j, esp_index = -1; + BOOL r, ret = FALSE, delete_data = FALSE; HANDLE hPhysical; - DWORD size, i, j, esp_index = 0; - BYTE layout[4096] = { 0 }; - GUID* guid; + DWORD dl_size, size, offset; + BYTE layout[4096] = { 0 }, buf[512]; + GUID *guid = NULL, *stored_guid = NULL, mbr_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"); @@ -1547,86 +1595,113 @@ 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), &size, NULL); - if (!r || size <= 0) { + r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, NULL, 0, layout, sizeof(layout), &dl_size, NULL); + if (!r || dl_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, j = 0; i < DriveLayout->PartitionCount; i++) { - if (CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_GENERIC_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))) { esp_index = i; - j++; + break; } } - if (j > 1) { - uprintf("ESP toggling is not available for drives with more than one ESP"); - goto out; - } - if (j == 1) { + if (esp_index >= 0) { // ESP -> Basic Data - i = esp_index; - uprintf("ESP name: '%S'", DriveLayout->PartitionEntry[i].Gpt.Name); - if (!StoreEspInfo(&DriveLayout->PartitionEntry[i].Gpt.PartitionId)) { + 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 (!StoreEspInfo(guid)) { uprintf("ESP toggling data could not be stored"); goto out; } - DriveLayout->PartitionEntry[i].Gpt.PartitionType = PARTITION_MICROSOFT_DATA; - } else { - // Basic Data -> ESP - 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 (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; + } + } + } + } + } + } 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; } } - if (found) - break; } } - if (j > MAX_ESP_TOGGLE) - goto out; - DriveLayout->PartitionEntry[i].Gpt.PartitionType = PARTITION_GENERIC_ESP; } } else { - for (i = 0, j = 0; i < DriveLayout->PartitionCount; i++) { + for (i = 0; i < (int)DriveLayout->PartitionCount; i++) { if (DriveLayout->PartitionEntry[i].StartingOffset.QuadPart == PartitionOffset) { - DriveLayout->PartitionEntry[i].Gpt.PartitionType = PARTITION_GENERIC_ESP; + 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; break; } } } - if (i >= DriveLayout->PartitionCount) { + if (esp_index < 0) { uprintf("No partition to toggle"); goto out; } - DriveLayout->PartitionEntry[i].RewritePartition = TRUE; // Just in case - r = DeviceIoControl(hPhysical, IOCTL_DISK_SET_DRIVE_LAYOUT_EX, (BYTE*)DriveLayout, size, NULL, 0, &size, NULL); + 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); if (!r) { uprintf("Could not set drive layout: %s", WindowsErrorString()); goto out; } RefreshDriveLayout(hPhysical); if (PartitionOffset == 0) { - if (CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_GENERIC_ESP)) { + if (delete_data) { // 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[i].StartingOffset.QuadPart, TRUE, FALSE); + volume_name = GetLogicalName(DriveIndex, DriveLayout->PartitionEntry[esp_index].StartingOffset.QuadPart, TRUE, FALSE); IGNORE_RETVAL(MountVolume(mount_point, volume_name)); free(volume_name); } @@ -1652,11 +1727,11 @@ const char* GetFsName(HANDLE hPhysical, LARGE_INTEGER StartingOffset) { "NTFS", { 'N', 'T', 'F', 'S', ' ', ' ', ' ', ' ' } }, { "ReFS", { 'R', 'e', 'F', 'S', 0, 0, 0, 0 } } }; - const win_fs_type fat_fs_types[] = { - { "FAT", { 'F', 'A', 'T', ' ', ' ', ' ', ' ', ' ' } }, - { "FAT12", { 'F', 'A', 'T', '1', '2', ' ', ' ', ' ' } }, - { "FAT16", { 'F', 'A', 'T', '1', '6', ' ', ' ', ' ' } }, - { "FAT32", { 'F', 'A', 'T', '3', '2', ' ', ' ', ' ' } }, + const win_fs_type fat_fs_types[] = { + { "FAT", { 'F', 'A', 'T', ' ', ' ', ' ', ' ', ' ' } }, + { "FAT12", { 'F', 'A', 'T', '1', '2', ' ', ' ', ' ' } }, + { "FAT16", { 'F', 'A', 'T', '1', '6', ' ', ' ', ' ' } }, + { "FAT32", { 'F', 'A', 'T', '3', '2', ' ', ' ', ' ' } }, }; const uint32_t ext_feature[3][3] = { // feature_compat diff --git a/src/drive.h b/src/drive.h index 6506da75..1a6be225 100644 --- a/src/drive.h +++ b/src/drive.h @@ -418,4 +418,5 @@ 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); diff --git a/src/format.c b/src/format.c index a3fcc63b..fde30967 100644 --- a/src/format.c +++ b/src/format.c @@ -2064,23 +2064,6 @@ 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; } @@ -2403,13 +2386,27 @@ 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) { diff --git a/src/mbr_types.h b/src/mbr_types.h index 652a0ef4..caa43738 100644 --- a/src/mbr_types.h +++ b/src/mbr_types.h @@ -165,7 +165,7 @@ mbr_type_t mbr_type[] = { { 0xec, "SkyFS" }, { 0xed, "GPT Hybrid MBR" }, { 0xee, "GPT Protective MBR" }, - { 0xef, "EFI FAT" }, + { 0xef, "EFI System Partition" }, { 0xf0, "PA-RISC Boot" }, { 0xf1, "SpeedStor" }, { 0xf2, "DOS secondary" }, diff --git a/src/rufus.rc b/src/rufus.rc index 5c66e470..a87ec5fb 100644 --- a/src/rufus.rc +++ b/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.18.1877" +CAPTION "Rufus 3.19.1878" 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,18,1877,0 - PRODUCTVERSION 3,18,1877,0 + FILEVERSION 3,19,1878,0 + PRODUCTVERSION 3,19,1878,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.18.1877" + VALUE "FileVersion", "3.19.1878" 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.18.exe" + VALUE "OriginalFilename", "rufus-3.19.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.18.1877" + VALUE "ProductVersion", "3.19.1878" END END BLOCK "VarFileInfo"