From 307e2f70757a8239fc5ea5b44ec94518fac8f92b Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Thu, 1 Aug 2019 18:07:44 +0100 Subject: [PATCH] [core] fix 'Bad label' errors with empty labels * Only happens on Win7 due to MinGW not automatically initializing variables to zero on that platform. * Root of the problem was that GetWindowTextU() did not properly handle empty text controls, due to GetWindowTextW() returning 0 on empty strings. As a result, the UTF-8 label was not properly set to the empty string, but kept whatever data it contained, which is garbage on Windows 7 and resulted in an invalid label (even after sanitizing, since we don't sanitize low-level ASCII characters). * Closes #1352 --- src/msapi_utf8.h | 3 +++ src/rufus.rc | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/msapi_utf8.h b/src/msapi_utf8.h index d4306864..740c75de 100644 --- a/src/msapi_utf8.h +++ b/src/msapi_utf8.h @@ -329,6 +329,9 @@ static __inline int GetWindowTextU(HWND hWnd, char* lpString, int nMaxCount) { int ret = 0; DWORD err = ERROR_INVALID_DATA; + // Handle the empty string as GetWindowTextW() returns 0 then + if ((lpString != NULL) && (nMaxCount > 0)) + lpString[0] = 0; // coverity[returned_null] walloc(lpString, nMaxCount); ret = GetWindowTextW(hWnd, wlpString, nMaxCount); diff --git a/src/rufus.rc b/src/rufus.rc index 2a64f3ab..36a846ee 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.7.1553" +CAPTION "Rufus 3.7.1554" FONT 9, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP @@ -394,8 +394,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,7,1553,0 - PRODUCTVERSION 3,7,1553,0 + FILEVERSION 3,7,1554,0 + PRODUCTVERSION 3,7,1554,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -413,13 +413,13 @@ BEGIN VALUE "Comments", "https://akeo.ie" VALUE "CompanyName", "Akeo Consulting" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "3.7.1553" + VALUE "FileVersion", "3.7.1554" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2019 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "https://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus-3.7.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.7.1553" + VALUE "ProductVersion", "3.7.1554" END END BLOCK "VarFileInfo"