Commit Graph

64 Commits

Author SHA1 Message Date
Pete Batard f813eb05d8
[iso] fix a buffer overflow in syslinux.c
* p[safe_strlen(p)] = 0; was pointless and could lead to a buffer overflow if
  the string was not already NUL terminated, so remove it and make sure we
  process a buffer that either contains legitimate Syslinux version strings
  (that are NUL terminated always) or that has been read through read_file()
  (that always adds a NUL terminator to the buffer).
* Also fix some whitespaces in related code sections and switch to using
  read_file() for GRUB version lookup.
* Vulnerability discovered and reported by Mansour Gashasbi (@gashasbi).
2024-04-10 10:26:31 +02:00
Pete Batard 8a5a5a318a
[misc] improve readability of error code handling
* Also don't pass a read size value in WriteFileWithRetry() if we don't use it.
2024-04-01 02:16:41 +01:00
Pete Batard 0bd38abd4e
[syslinux] improve support for Syslinux based Slax ISOs
* For some weird reason appending the base directory to the root syslinux.cfg
  we create does not appear to work with Slax. So we now always patch ldlinux.sys
  to include the base directory.
* Also add an exception to move the /slax/boot/EFI directory to /EFI.
* It should be noted that, as of slax-64bit-slackware-15.0.3.iso, the Slax UEFI
  Syslinux bootloaders appear to be broken (since creating a media without using
  Rufus at all per the Slax documentation does *not* produce a USB drive that was
  bootable in UEFI mode on 2 of the machines I tried).
* Also clean up some iso.c code and fix some unreachable code in ntfssect.c.
* Closes #2336.
* Closes #2338.
2023-10-11 20:46:46 +01:00
Pete Batard 3177e70e25
[misc] fix CodeQL warnings 2023-04-22 16:36:27 +01:00
Pete Batard 036f6260c5
[ui] fix regression in conditional expression and use %c always
* This fixes the regression introduced in c28f9bc491.
* 'if ((a && !b) || (!a && b))' can not always be simplified as 'if (a != b)' when the types for 'a' and 'b' are not straight booleans.
* Closes #1862
* Also drop the use of '%C' in printf() expression, as it is intended to print wide characters and not turn a char to uppercase.
2022-01-31 16:55:42 +00:00
Pete Batard c28f9bc491
[misc] fix PVS-Studio warnings 2022-01-05 12:57:26 +01:00
Dimitri Papadopoulos d840083a32
[misc] fix typos found by codespell
* 3rd party software was left out.
* Most changes are in code comments, but one user-visible string has also been fixed.
* Closes #1817
2021-11-16 18:53:52 +00:00
Pete Batard 32b083e535
[misc] improve path display for Sylinux/GRUB resources 2021-10-21 01:59:03 +01:00
Pete Batard 56a99e6394
[misc] use application dir for storage in portable mode
* Also improve path reporting in the log.
* Also fix MinGW warnings
2021-10-11 20:11:06 +01:00
Pete Batard 9d7e96e293
[core] move downloads from <app_location>\rufus_files\ to %LOCALAPPDATA%\Rufus\
* While this is intended to solve the issue of saving GRUB/Syslinux files for the
  App Store version, we apply this change globally, as it allows the user to move
  the Rufus executable around while preserving access to existing downloads.
* Closes #1744
2021-05-31 16:54:11 +01:00
Pete Batard b8579c04da
[misc] add arbitrary buffer allocation to GetResource()
* If duplicate is TRUE and len is non-zero, then a buffer of len size,
  padded with zeroes, is allocated for the resource.
2020-02-19 12:43:05 +00:00
Pete Batard af95de8198
[ui] add experimental optional display of transfer speed and time remaining
* You can use <Alt> to switch modes during an operation that supports it (e.g. Checksum
  computation, DD image writing or zeroing, save to VHD, download, etc.
* IMPORTANT: This is *NOT* available for all operations. Especially, if you were hoping
  to get transfer speed or ETA during ISO or WIM extraction, you *WILL* be disappointed.
* Also harmonize the code in checksum.c
2019-08-20 18:06:07 +01:00
Pete Batard 1c39a80d72
[core] partial overhaul of the partitioning and formatting facilities
* Add VDS formatting support (through an Alt-V cheat mode)
* Add partition index support
* Improve(?) Windows To Go support by following Microsoft recommended partition order
* Code refactoring & cleanup
2019-04-25 18:58:55 +01:00
Pete Batard 9610e3a63b
[misc] refactor some global variables' names so we can reinstate -Wshadow
* Also remove no longer used _coverity.cmd and update .gitignore
2019-04-13 15:29:27 +01:00
Pete Batard a44518355f [ui] UI redesign
* Better guide the user through the flow of operations
* Also follow a concept design by Fahad Al-Riyami
* Closes #117
2018-03-22 23:14:21 +00:00
Pete Batard 477ff95f93 [core] display device paths in GetHandle()
* Also reorder bLockDrive and bWriteAccess parameters
2017-04-08 21:58:10 +01:00
Pete Batard 136fd7a37e [syslinux] fix non release of the volume handle with NTFS
* Closes #904
2017-02-17 11:05:49 +00:00
Pete Batard 2f81e4f177 [core] avoid the use of FILE_SHARE_WRITE
* Not having FILE_SHARE_WRITE on a disk or volume handle helps
  prevent spurious accesses from the OS or other apps while we
  are repartitioning/refomatting.
2017-02-16 14:13:30 +00:00
Pete Batard 104b33a7ba [core] remove 'MBR for BIOS' option for pure UEFI images
* Closes #832
* Also refactor image property macros
2016-12-14 23:27:41 +00:00
Pete Batard e76f60a3e8 [misc] use the more univerasal _mm_alloc() instead of _aligned_malloc()
* Also ensure that our buffers are aligned
* Also remove the use of static buffers in ms-sys
2016-06-10 12:42:43 +01:00
Pete Batard 3fdf622933 [syslinux] fix Syslinux installation for some media
* Some disk devices, such as O2Micro PCI-E SD card readers, return ERROR_INVALID_PARAMETER
  when attempting to use ReadFile() on a volume against a non 8-byte aligned buffer.
* This patch ensures that the Syslinux buffers for sector patching are 16-byte aligned.
* HUGE THANKS to 424778940z, for the numerous testing that allowed to troubleshoot this issue.
* Closes #767
2016-06-09 17:49:58 +01:00
Pete Batard f1f620411c [syslinux] use SetFilePointerEx and other improvements 2016-06-06 19:39:53 +01:00
Pete Batard 790aacd49a [core] add SHA-256 validation DB for downloadable content
* Downloadable content will now be indicating, in the log, whether it can be trusted with ✓ (validated) or ✗ (caution)
* Of course this validation only applies for files we know of, i.e. the downloadable content that existed at the time the DB was
  created. So, if Syslinux 8.x gets released tomorrow and we put it on our server, you'll get an ✗ regardless of its integrity.
* Closes #758
2016-05-25 12:20:20 +01:00
Pete Batard 81673ade26 [core] clean up the RUFUS_DRIVE_INFO struct
* Remove the duplication of DISK_GEOMETRY to keep only the variables we actually use
* Also set rufus-next to 2.10
2016-05-23 12:19:43 +01:00
Pete Batard 1a24e5bbd7 [syslinux] fix a typo that reintroduced a possible crash
* a10a207790 reintroduced the crash that was fixed in ad68ccfac9
  due to the missing semicolon.
* Also fix a minor output message issue
* Closes #752
2016-05-16 16:33:53 +01:00
Pete Batard 250d46e401 [core] use GetTickCount64() always where possible
* Damn you XP!!!
* Also some more code cleanup
2016-02-24 16:10:54 +00:00
Pete Batard db0880e534 [syslinux] update Syslinux to better align with its official source
* This means disabling some warnings and removing explicit casts, but so be it...
* Also fix the minfatsize check for Large FAT32
2016-02-23 20:52:06 +00:00
Pete Batard c3f47ada06 [misc] add missing.h header
* Also clean up code
2016-02-20 22:52:32 +00:00
Pete Batard f2a539a48c [core] add and use WriteFileWithRetry() where possible 2016-01-14 17:43:02 +00:00
Pete Batard ad68ccfac9 [syslinux] fix a crash if the downloaded Syslinux content has been modified
* Some stupid corporate firewalls will return garbage content for ldlinux.bss/ldlinux.sys
  instead of a 403 (as they really should), which creates an issue with the code written
  by the Syslinux people, as they forgot to check for potential overflows...
2015-10-28 23:17:55 +00:00
Pete Batard 5024e7f65e [internal] refactor iso_report -> img_report
* Also set rufus-next to 2.4
2015-09-02 23:20:00 +01:00
Pete Batard 3ccae1d2e2 disable MS-DOS creation for Windows 10 or later
* Microsoft removed the diskcopy.dll that contained the MS-DOS floppy image
  Not a big loss, since we have FreeDOS... ;)
* Closes #545
* Also apply a long overdue refactoring for boot and target types
* Also update the README to add an icon
2015-07-01 21:26:41 +01:00
Pete Batard 9e7b0bad89 [syslinux] add support for 4K sector size
* Also add 4K sector size support in ms-sys
2015-06-02 21:47:44 +01:00
Pete Batard 785150dcb2 [core] fix "Requesting Disk Access" issue with Syslinux/NTFS
* See http://reboot.pro/topic/17902-rufus-v130-has-been-released/?p=190958
* Also fix non continuation of format operation after Syslinux has been downloaded
* Also fix missing Syslinux installation for ReactOS
2015-02-26 00:15:13 +00:00
Pete Batard a327bb114c [ui] Remove the separate progress dialog
* Closes #125
* Also provide more intuitive info for bad blocks check
* Also update Bled to latest to enable cancelling
2015-01-01 23:39:28 +00:00
Pete Batard 6b433c7fc0 [iso] fix sanitization of paths during ISO during extraction
* Also add sanitization for Syslinux downloaded content
* Also factorize printout of extracted file
* Closes #397
2014-11-20 23:00:59 +00:00
Pete Batard 2be12ff3b6 [ui] use "Segoe UI" as default font on Vista and later
* Greatly improves the display of non western character sets, such as CJK.
* Note: Since I'm no longer willing to go the extra mile for XP, the way we
  handle the non availability of the Segoe font there is by doing the lazy
  thing and duplicating all our UI resources, in a similar way as what we do
  for RTL, and setting them with the old "MS Shell Dlg".
* Also update some Syslinux V5 refs to Syslinux V6.
* Closes #308
2014-11-12 02:39:12 +00:00
Pete Batard 6ca024ae3b [syslinux] update Syslinux to v6.03
* Also add experimental support for Syslinux/NTFS
* Closes #391
2014-11-11 19:54:05 +00:00
Pete Batard 0fceb38433 [syslinux] fix tails breakage and add support for fine grained versions
* With that obscene an amount of pre-releases of 6.03 (seriously, how
  many more YEARS pre-release of the same version do you actually need?),
  of course the syslinux people have managed to break the last remnants
  of compatibility they had between a single major version, so we are now
  forced to provide a smorgasbord of pre-release and out of band syslinux
  binaries on our server, and make sure we detect and handle incompatible
  syslinux versions clientside...
  For instance, even after fixing the EFI vs isolinux issue, we find
  that tails 1.1 is incompatible with 'pre19'. But it also uses its own
  '20131220' extended identifier, instead of 'pre1', its closest
  relative. So we have to multiply files and symbolic links to try to
  keep everybody happy.
  Talk about a MAJOR LETDOWN from the syslinux project...
* Closes #363
2014-08-06 01:52:36 +01:00
Pete Batard 2577337dec [misc] right-to-left and version handling improvements
* Improve right-to-left consistency and handling
* Drop 'v' from version indicators
* Also update version to 1.4.4
* Also fix French translation typos
2014-01-24 20:02:52 +00:00
Pete Batard 3ae7ec4af5 [core] detect, report and warn when multiple partitions are in use
* Closes #191
* Also fix various minor warnings
2014-01-21 23:09:30 +00:00
Pete Batard 299506056a [syslinux] fix support for recent Syslinux versions
* Detect Syslinux version from isolinux.bin (Closes #272)
* Download required Syslinux v5+ files where needed (Closes #165)
* Also fix an issue where using a Syslinux based ISO didn't switch to ISO mode
* Also alter DownloadFile and ExtractISOFile to return a size
2014-01-21 21:59:09 +00:00
Pete Batard 573ea45640 [core] add support for bare ReactOS boot record installation
* A new "ReactOS" is now available under "Create a bootable disk" when running in advanced mode.
* Using this option will install the ReactOS bootblocks (MBR & FAT PBR) _only_.
  You can then copy freeldr.sys and freeldr.ini to make the drive bootable.
* Also move Rufus MBR installation to ms-sys, and remove mbr.bin resource.
* Also add Rufus MBR detection, remove duplicate records and display MBR type on drive detection
* Also move PBR and MBR analysis calls to drive.c and add a drive.h header
* Also make extraction of embedded loc file more robust
2014-01-05 01:39:41 +00:00
Pete Batard e9e27d7034 [core] add ReactOS support
* Use Syslinux v4 and mboot.c32 to chainload setupldr.sys
* Closes #266
2014-01-02 23:21:30 +00:00
Pete Batard 18c9df18b5 [loc] set log messages to use English locale
* This is done to ensure I can understand logs that are sent to me,
  even when a non English locale is used.
* Closes #188.
2013-12-19 23:56:40 +00:00
Pete Batard df06727416 [loc] add localization support
* This is a merge up to commit bd319269aa of the localization branch
* Also fixes Clang warnings
2013-10-15 23:25:54 +01:00
Pete Batard bb2949e557 [core] limit large FAT32 to 1 TB
* 1.5 and 2 TB formatting is too flaky for now - remove it
* This limitation can be disabled with Alt-S
* Also fix various smaller issues
2013-07-05 23:58:04 +01:00
Pete Batard 0938c56fdc [syslinux] fix crash when installing syslinux on large drives
* The check for minfatsize seems erroneous, and libfat_open()
  errors weren't checked in syslinux.c anyway
* Closes #156
2013-07-05 22:26:47 +01:00
Josh Soref fe3b1eb6f6 [misc] fix spelling mistakes
* Closes #147
2013-06-22 01:15:36 +01:00
Pete Batard 1dbaff6897 [syslinux] complete Syslinux v5 support
* Add download and copy of mandatory ldlinux.c32 to target
* With previous patch, this should address all Syslinux v5 related issues
* Closes #142
2013-06-15 17:31:55 +01:00