1
1
Fork 0
mirror of https://github.com/pbatard/rufus.git synced 2026-07-09 06:55:39 +00:00
Commit graph

2,316 commits

Author SHA1 Message Date
Pete Batard
3bbdd6624e
[wue] cd to wrapper directory before looking for setup.dll
* Closes #2757.
2025-07-10 10:52:17 +01:00
Pete Batard
c6a85b09ae
[ui] fix wrong colour for disabled text in dark mode
* Closes #2764.
* Also fix signature not being properly applied to MinGW GitHub Actions ALPHA builds.
2025-07-03 22:28:42 +02:00
Pete Batard
e571996525
[misc] sign the GitHub ALPHA builds using self-signed credentials
* Obviously, this does not use the same Authenticode credentials we use for actual releases
  (which we wouldn't be able to export anyway, as it resides on a hardware token), but it
  should help officialize our GitHub builds, as well as remove an extra prompt.
* Also move the revoked UEFI bootloader check before the DD vs ISO check, so that people
  choosing DD mode still get alerted about the revoked bootloaders.
* Also don't refresh the device list after saving to image, and fix a Coverity warning.
2025-07-01 14:23:34 +01:00
Pete Batard
a2dd380e93
[iso] add save selected drive to ISO feature
* Requires the download of oscdimg.exe, courtesy of Microsoft's symbol servers.
* UDF only, since this is mostly intended for Windows and even with Joliet, Microsoft's
  implementation of ISO-9660 is crippled (fails to use multi-extent for >4GB files, which
  results in BROKEN ISO images) and too limited.
* Note that this is different from our other save to ISO feature (Alt-O), that dumped
  the first optical media found on the system to an ISO.
* Also fix a Coverity warning as well as a possible crash in PopulateWindowsVersion()
  when opening an invalid image (such as the ISO-9660 ones created by oscdimg).
2025-06-30 11:54:36 +01:00
Pete Batard
a8901f5e58
[core] switch to jserv/cregex for the regexp parser
* We need group support for group matches and tiny-regex-c doesn't support them.
2025-06-27 15:29:08 +01:00
Minh Nguyễn Quang
8cf88ffe7a
[loc] update Vietnamese translation 2025-06-26 12:21:16 +01:00
Pete Batard
446e71f56d
[dbx] fix UTC epoch being interpreted as local time for DBX timestamp comparison
* Per MS documentation, _mktime64() *ALTERS* the time being passed to first add/substract
  the timezone offset before converting to an epoch.
* This resulted in our evaluated epoch from the DBX GitHub commit being a few hours more
  recent than the epoch we store for our embedded files (which is UTC) for timezones that
  are behind of UTC, since their epoch have an offset added to convert localtime to UTC.
* Fix this by using _mkgmtime64() that does not suffer an unwanted time manipulation.
* For safety, also use -u for epoch format conversion in our script just in case.
* Closes #2762.
* Also comment the "unsupported check; not verifying file integrity" warning for XZ
  decompression, improve XZ ARM64 support and add an exception for some Samsung UFDs.
2025-06-25 10:54:10 +01:00
Pete Batard
94a2c7c2fb
[ui] fix checkboxes being erroneously enabled
* The "Quick Format" and "Create extended label" checkbox could be enabled when no device
  is detected by checking the "List USB Hard Drives". Fix that.
* Also fix/silence some Coverity warnings (div by zero, overflow, unreachable code, uninit'd mem).
* Also ad @ozone10 to the credits for the Dark Mode UI.
2025-06-18 15:42:13 +01:00
ozone10
170440e51c
[ui] add dark mode support
* Also fix erroneous use of EndDialog() instead of DestroyWindow() in rufus.c,
  which resulted in WM_DESTROY/WM_NCDESTROY messages not being generated.
* Closes #2713.
* Closes #2510.
* Closes #1453.
2025-06-17 14:41:31 +01:00
Pete Batard
e9f451dfe0
[dbx] prettify JSON output for parsing since GitHub/curl may return monoblock JSON data
* Also set rufus-next to 4.10.
2025-06-16 13:50:02 +01:00
Pete Batard
9a32dba290
Rufus 4.9 (Build 2256) v4.9
* This is a bugfix release, that addresses critical issue #2756 as well as minor issue #2754.
2025-06-15 21:22:13 +01:00
Pete Batard
3791b96fcd
[net] fix downloads no longer working after the recent GitHub server update
* GitHub appears to have updated their HTTP servers to enable gzip compression when requested.
* Unfortunately, the default from Rufus was to attempt to use compression where possible
  (ironically in an effort to save GitHub some bandwidth), which doesn't seem to sit too well
  with Windows' HttpQueryInfoA(HTTP_QUERY_CONTENT_LENGTH) API, as it errors out on trying to
  produce the content-length *DESPITE* the field being reported by GitHub in the HTTP header.
* As a result, we switch all HTTP downloads *not* to try to use compression by forcing
  "Accept-Encoding: identity".
* Unfortunately, besides affecting the download of resources such as GRUB/Syslinux ones, it
  also affects the ability to look for updates, which means that NONE of the version of Rufus
  prior to 4.9 (outside of the Windows Store ones) will be able to find that there exists a
  newer version to update to... :(
* Closes #2756.
2025-06-15 21:17:32 +01:00
Pete Batard
e128727521
[wue] fix WUE dialog not being presented on WIMs with a single image
* As opposed to what we used with the old parser, ezxml's indexes now start at 0 rather than 1.
* Closes #2754.
* Also set rufus-next to 4.9.
2025-06-13 16:37:46 +01:00
Pete Batard
d06b729659
Rufus 4.8 (Build 2253) v4.8
* Also update x64 DBX to latest (since Microsoft has to update the DBX the very same day we pushed a new release)
2025-06-11 12:34:08 +01:00
Josef Šimánek
dab438d814
[loc] fix typo in Czech translation
* Closes #2746.
2025-06-10 16:58:28 +01:00
Pete Batard
fe9b137902
[wue] forward wrapper parameters to original setup.exe
* Also fix MinGW builds from outside of root directory
* Closes #2751
* Closes #2752
2025-06-09 17:30:18 +01:00
Pete Batard
688f011f31
[iso] improve UEFI bootloader reporting
* Add systemd-boot version reporting and fix GRUB version detection for CentOS
* Add notes about the various Secure Boot gotchas (log only)
* Enable download of remote active/revoked Secure Boot certificate thumbprints
* Also rename the ceiling/floor align macros
2025-05-26 20:56:26 +01:00
Pete Batard
207a330979
[core] fix a crash due to overzealous MSVC optimizations
* Visual 2022 version 17.14.2 changes the way it performs optimizations with /O2
  which results in innocuous C statements, such as invoking strtoul() twice on
  the same line, and using the pointer returned by the first call in the second,
  crashing the application with a read access violation (when built as RELEASE).
* To alleviate that, we break down the Syslinux strtoul() invocation, as well as
  harden our Syslinux version processing while we're at it.
* Hopefully this is the only line of code where the new mode of MSVC optimisation
  creates a problem with...
* Closes #2740.
2025-05-23 14:50:51 +01:00
Pete Batard
be5642ef33
[iso] add more DD-only exceptions for openSUSE and Nobara
* The openSUSE maintainers don't care about their users, so we have to care in their stead.
* As for Nobara images, that use the Red Hat GRUB bootloaders with no support for NTFS and
  that include files larger than 4 GB, we now attempt to detect the filesystems supported
  by EFI GRUB, in order to decide how we can proceed with the writing of such images.
  We take this opportunity to improve our reporting on the GRUB bootloaders we detect.
* Plus the usual Coverity dance.
2025-05-19 17:24:48 +01:00
Pete Batard
bb8f231c07
[misc] fix Coverity warnings for Syslinux and libcdio
* Also increase libcdio's ISO9660 read buffer sanity check to 1 GB.
2025-05-19 13:28:23 +01:00
Pete Batard
87efc7642a
[iso] update libcdio to latest 2025-05-14 16:07:25 +01:00
Pete Batard
01d18d99de
[misc] remove manual hooks into ntdll
* Since we are now liking with ntdll directly, we can remove all the hooks we applied
  and just use regular calls. We also rename process.h to ntdll.h as a result.
2025-05-14 10:43:45 +01:00
Pete Batard
4adfa4f37e
[misc] more MinGW DLL side loading "improvements"
- Side load SetupAPI.dll, as this is the DLL that was causing the CfgMgr32.dll local load.
  This reverts part of 622e60659c since we no longer have to hook into CfgMgr32.dll directly.
- Also set the redefinition of DECLSPEC_IMPORT, which we need for MinGW32 x86, in the global AM_CFLAGS
  of configure.ac, so that we no longer have to worry about forgetting to do it in a source and experience
  crashes on 32-bit as a result (See 965759f58a).
- Also delay-load crypt32.dll while we're at it.
- Also add provision for enabling /DEPENDENTLOADFLAG:0x800 on MinGW, by leaving a properly crafted entry
  in the .rdata section that can then be used with the loadcfg.py Python script.
- Sadly, per https://github.com/pbatard/rufus/issues/2701#issuecomment-2874788564 and subsequent comment,
  having DependentLoadFlags set to LOAD_LIBRARY_SEARCH_SYSTEM32 is still not enough to take care of side
  loading issues, as, ever since the introduction of wimlib support, we are seeing CRYPTBASE.DLL being
  side-loaded in MinGW, and, even with crypt32.dll being delay-loaded there is literally *nothing* we can
  do about it!
- The end result of all the above is that we will have no choice but ditch MinGW for release executables
  as it's just impossible to properly take care of side-loading vulnerabilities with MinGW (and Microsoft
  are REALLY not helping with this whole mess either, when they don't even use LOAD_LIBRARY_SEARCH_SYSTEM32
  for Windows' system DLLs).
- In preparation for this, we add UPX compression to the x86_64 and x86_32 MSVC executables.
- Finally, we also fix one last Coverity warning in xml.c and remove duplicates in .vcxproj for ARM64.
2025-05-13 20:31:35 +01:00
Pete Batard
13c6becf42
[core] fix size check for VHD images
* Recent changes broke the check for whether the source image is larger than the target drive
  in the case of uncompressed VHDs (that have a 512 byte footer), so fix that by making sure
  we always compare with the projected size.
* Closes #2729.
* Also fix some more Coverity warnings.
2025-05-07 13:35:48 +01:00
Pete Batard
965759f58a
[ui] fix a crash when opening the log for MinGW x86_32 executable
* DwmGetWindowAttribute() from dwmapi.dll is delay-loaded so it requires the MinGW DECLSPEC_IMPORT workaround.
* Closes #2728.
* Also fix a bunch of Coverity warnings in wimlib and ezxml.
2025-05-06 18:43:35 +01:00
Pete Batard
ea01cd41c0
[iso] enable splitting of large WIMs when Alt-E is enabled
* Now that we have wimlib, we might as well add this has an option for people who really
  don't want to use NTFS, even if it falls way short of the performance we get with NTFS.
* Also use wimlib to read the install.wim version.
* Also fix a couple Coverity warnings in stdfn.c/stdio.c.
2025-05-06 01:35:26 +01:00
Pete Batard
2470c56c7e
[wue] switch to using wimlib for all WIM operations
* This should greatly improves performance when patching boot.wim for WUE or creating Windows To Go drives.
* This also allows us to discard all the bulky (and limited) native WIM API function calls.
* Also add some UTF-8 wrappers to wimlib and a GetTempDirNameU() function call.
* Also revert to the old ssize_t definition in unistd.h, since trying to be too smart throws static analysers off...
2025-05-05 00:58:07 +01:00
Pete Batard
5d35a0f1fa
[ui] progress reporting improvements
* Factorize the log progress bar update into a new uprint_progress() call.
* Add a new FP_NO_PROGRESS flag to disable progress reporting when formatting.
* Alter the progress reporting frequency of wimlib.
* Also update some copyright dates we missed before.
2025-05-03 21:32:10 +01:00
Pete Batard
96996ae1ee
[vhd] add libcdio integration to wimlib
* Allows working with WIMs without mounting the ISO by referencing something like "C:\Downloads\Windows.iso|sources/install.wim".
2025-05-02 17:28:42 +01:00
Pete Batard
c288f2fe57
[iso] add udf_setpos() support in libcdio
* This is needed for wimlib libcdio integration.
* Also fix a signed/unsigned warning in iso.c.
2025-05-02 17:27:24 +01:00
Pete Batard
9f7d623e2e
[vhd] add wimlib support
* This includes all the changes applied to wimlib for MSVC compilation support.
* The vast majority of these changes were original, but a very small set came
  was lifted from https://github.com/ebiggers/wimlib/pull/6 (which we discovered
  after we went through this whole exercise on our own...)
2025-05-02 17:25:37 +01:00
Pete Batard
1ed92072b8
[vhd] initial wimlib support (original sources)
* From https://wimlib.net/git/?p=wimlib;a=commit;h=4a34203cde54c317f0d277a4c64e19916547bf10
2025-05-02 17:25:35 +01:00
Pete Batard
e60dd7edb8
[wue] add ezxml support for WIM index parsing
* ezxml was partially altered with some changes from PRs found at https://github.com/lxfontes/ezxml.
* Also apply some small improvements to msapi_utf8.h.
2025-05-02 16:51:30 +01:00
Pete Batard
c31df87732
[wue] initial ezxml sources (unmodified)
* From the ezxml-0.8.6.tar.gz download at https://ezxml.sourceforge.net/.
2025-05-02 16:51:29 +01:00
Pete Batard
b895f26ebc
[misc] miscellaneous cleanup
* Make sure we use _M_IX86 and _M_X64 where required.
* Fix some static analysis warnings.
* Update version for rufus-next.
2025-04-21 20:20:59 +01:00
Pete Batard
88f023e796
Rufus 4.7 (Build 2231) v4.7
* Update FreeDOS to v1.4
* Update Grub4DOS to latest
2025-04-09 11:10:21 +01:00
Pete Batard
7ff68dc7af
[appstore] drop ARM32 from packaged builds and use our own PE data extractor instead of exiftool
* exiftool is way too cumbersome as a "standalone" commandline executable for our purpose.
* Also update French translation.
2025-04-02 12:16:33 +01:00
Pete Batard
871bc9a25f
[core] fix ReFS no longer being available unless VDS is enabled 2025-03-31 20:39:19 +01:00
Pete Batard
fdde687d46
[uefi] embed and allow the download of official signed DBX binaries
* With Microsoft having finally relinquished the terms of use of DBX binaries (where their
  previous legalese pretty much made it illegal for anyone who wasn't an OS manufacturer to
  download DBX for use in applications) we can now formally embed, as well as download the
  DBXs when they are updated.
* This is accomplished by querying the https://github.com/microsoft/secureboot_objects
  GitHub repo (which is now the official repository for the UEFI Forum's revocation files)
  through api.github.com and checking the timestamps of the last commit on the relevant files.
  If a more recent DBX is found than the one embedded (or a previously downloaded one), Rufus
  will now prompt the user to download it, as part of its regular update check (if enabled).
* Note that, since there have been no official revocations for them yet, IA64, RISCV64 and
  LoongArch64 are currently placeholders.
* Also note that we currently don't use this mechanism for Microsoft's SVN revocations, as
  we already have a more efficient check for it through SBAT.
* Also fix the handling of the RISCV64 MD5Sum UEFI bootloader, whose offset was incorrect.
2025-03-27 16:11:45 +00:00
Pete Batard
845d26e3b6
[ui] fix toolbar ImageLists leaks
* Also fix erroneous use of safe_delete_object() in previous commit and harmonize names.
* Closes #2711.
2025-03-24 13:18:20 +00:00
ozone10
df4f8301d7
[ui] fix GDI leaks
* Closes #2704.
2025-03-21 12:19:16 +00:00
Pete Batard
bc75274a9a
[msvc] further prevent DLL side-loading by using /DEPENDENTLOADFLAG:0x800
* Suggested by @dimhotepus per #2701.
* Sadly a similar feature can't be applied for MinGW builds. (See also https://sourceforge.net/p/mingw-w64/mailman/message/59156023/)
* While we're at it, also sure we use /BREPRO everywhere for MSVC reproducible builds.
2025-03-04 11:47:11 +00:00
Pete Batard
7585a35c2c
[core] improve detection for images that are too large to fit the target drives
* Rufus did not check if the size of the decompressed VHDX was larger than target. Fix that.
2025-02-21 17:53:38 +00:00
Pete Batard
9540ca359d
[misc] don't enable the commandline hogger on POSIX shells
* Assume that the presence of a "SHELL" environment variable is enough to tell if we have a POSIX shell.
2025-02-20 13:13:44 +00:00
Pete Batard
622e60659c
[dev] fix a side-loading vulnerability with cfgmgr32.dll
* Current Rufus and earlier versions (when compiled with MinGW) suffer from a side-loading vulnerability
  due to cfgmgr32.dll being attempted to be loaded from the same directory as the executable. This may
  result in someone being able to execute elevated malicious code if they already have gained user-level
  access to the platform and were able to drop an arbitrary cfgmgr32.dll in the same directory as rufus.
* While we were able to address similar vulnerabilities using delay-loading, this method does not appear
  to work for MinGW with this specific DLL, so we remove all the implicit CM_ function calls, that result
  in automated DLL loading that cannot be mitigated, to replace them with direct DLL hooks, which are
  not subject to Windows' default (vulnerable) DLL lookup behaviour. We still add the def for the delay
  loading in case we manage to find how to delay load cfgmgr32 with MinGW in the future...
* Fixes CVE-2025-26624 (https://github.com/pbatard/rufus/security/advisories/GHSA-p8p5-r296-g2jv).
* This vulnerability was discovered by @EmperialX working with @Shauryae1337 and reported by @EmperialX.
2025-02-19 11:58:10 +00:00
Rairii
50801a47ff
[misc] fall back to user/system default locale when getting error description
* Some Windows localisations do not contain English MUI files for specific error codes, so show *something* instead of an error.
* Closes #2687.
2025-02-14 01:07:43 +00:00
Pete Batard
f3c29bf537
[misc] fix and silence some Coverity warnings 2025-02-13 15:14:53 +00:00
lucamosca1
ec604f43d6
[loc] fix a typo in the Italian translation
* Closes #2675.
2025-02-10 17:47:29 +00:00
Pete Batard
d910441427
[misc] Fix issue template no longer being processed
* Since GitHub broke existing paths and did not bother to alert people.
* Closes #2672.
2025-01-25 13:06:07 +00:00
Pete Batard
1c300b428a
[uefi] update UEFI DBX to latest
* This is in light of the 2025.01.14 DBX update due to https://arstechnica.com/security/2025/01/microsoft-patches-windows-to-eliminate-secure-boot-bypass-threat/.
* Also update application copyright year and a translator's e-mail address.
2025-01-24 00:30:22 +00:00