From 8bd9055d6c602b5f3fda8be8a8f0e8ae5882372f Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Mon, 2 May 2016 12:06:38 +0100 Subject: [PATCH] [misc] add a retry on commandline hogger deletion * Trying to delete the hogger could result in access denied on first attempt, which would leave a rufus.com behind * Part of #714 --- src/rufus.c | 13 +++++++------ src/rufus.rc | 10 +++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/rufus.c b/src/rufus.c index 65199eca..32a2bdf2 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -242,7 +242,7 @@ static BOOL DefineClusterSizes(void) if ((SelectedDrive.DiskSize >= 256*MB) && (SelectedDrive.DiskSize < 32*GB)) { for (i=8; i<=32; i<<=1) { // 256 MB -> 32 GB if (SelectedDrive.DiskSize*1.0f < i*GB*FAT32_CLUSTER_THRESHOLD) { - SelectedDrive.ClusterSize[FS_FAT32].Default = ((ULONG)i/2)*1024; + SelectedDrive.ClusterSize[FS_FAT32].Default = ((ULONG)i/2)*KB; break; } } @@ -259,7 +259,7 @@ static BOOL DefineClusterSizes(void) SelectedDrive.ClusterSize[FS_NTFS].Allowed = 0x0001FE00; for (i=16; i<=256; i<<=1) { // 7 MB -> 256 TB if (SelectedDrive.DiskSize < i*TB) { - SelectedDrive.ClusterSize[FS_NTFS].Default = ((ULONG)i/4)*1024; + SelectedDrive.ClusterSize[FS_NTFS].Default = ((ULONG)i/4)*KB; break; } } @@ -3282,14 +3282,15 @@ out: SetLGP(TRUE, &existing_key, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "NoDriveTypeAutorun", 0); if ((nWindowsVersion > WINDOWS_XP) && (!automount) && (!SetAutoMount(FALSE))) uprintf("Failed to restore AutoMount to disabled"); + // Unconditional delete with retry, just in case... + for (i = 0; (!DeleteFileA(cmdline_hogger)) && (i <= 10); i++) + Sleep(200); + CloseHandle(mutex); + CLOSE_OPENED_LIBRARIES; if (attached_console) { SetWindowPos(GetConsoleWindow(), HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE); FreeConsole(); } - // Unconditional delete, just in case... - DeleteFileA(cmdline_hogger); - CloseHandle(mutex); - CLOSE_OPENED_LIBRARIES; uprintf("*** " APPLICATION_NAME " exit ***\n"); #ifdef _CRTDBG_MAP_ALLOC _CrtDumpMemoryLeaks(); diff --git a/src/rufus.rc b/src/rufus.rc index e9cd6b45..60e5b44b 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 2.9.895" +CAPTION "Rufus 2.9.896" FONT 8, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8 @@ -320,8 +320,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,9,895,0 - PRODUCTVERSION 2,9,895,0 + FILEVERSION 2,9,896,0 + PRODUCTVERSION 2,9,896,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -338,13 +338,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "2.9.895" + VALUE "FileVersion", "2.9.896" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2016 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "2.9.895" + VALUE "ProductVersion", "2.9.896" END END BLOCK "VarFileInfo"