Pete Batard
2016-Feb-24 13:02 UTC
[syslinux] [PATCH 0/5] fix installer issues and enable some MSVC compatibility
Hi, As I am embedding part of the Syslinux code in Rufus [1], I have encountered various issues that I would like to see addressed, so that I can keep most of my code in sync with the official mainline. Some of these fixes have to do with being more friendly with MSVC compilation, and other are fixes for actual Syslinux issues, that Rufus users have encountered. For convenience, the individual description of each patch is gathered below: o [PATCH 1/5] fat: fix minfatsize for large FAT32: When trying to installing Syslinux on a FAT32 drive formatted using Ridgecrop's Large FAT32 formatting tool [2], the installer will bail due to the minfatsize check, as there is an extra sector being used. This fix addresses that. o [PATCH 2/5] ntfs: remove unused variable and have ntfssect use char The variable 'ok' is never used and generates a warning. Remove it. Also ntfssect.c is designed to be compiled in non Unicode mode when using MSVC compilers, so remove all ambiguity about it (LPCTSTR -> LPCSTR, use of 'A' API calls) so that it doesn't break when compiled in Unicode mode, which is what Rufus uses with MSVC. o [PATCH 3/5] installers: MSVC compatibility fixes More MSVC compatibility fixes, for packed structures. NB: In case you are aware of the issues that may come with MS vs GCC packing, so far, I have not seen evidence of detrimental impact from using ms_struct packing in MSVC (vs gcc_struct, which is explicitly specified for MinGW), with regards to the sections of code I am using in Rufus. o [PATCH 4/5] installers: fix a possible buffer overflow when looking for LDLINUX_MAGIC If the ldlinux being processed is garbage, the search for LDLINUX_MAGIC will overflow its buffer - fix that. I encountered this issue in Rufus as, due to notorious incompatibilities between different versions of ldlinux.sys and the com32's residing on an ISO (NB: 6.03 pre has been a nightmare in that respect [3]), we download a version specific ldlinux.sys from our server... which may get trashed if the user sits behind one of these corporate firewalls that modifies the download payload and replaces it with something like "You are not authorized to download this file"... o [PATCH 5/5] installers: fix a MinGW redefinition warning I get a redefinition warning on _GNU_SOURCE when compiling with MinGW, and while I could see that this #define was introduced in e4fc44 [4], but the reason to introduce it is not mentioned, and I can't really see a good reason to have it, especially as MSVC will happily compile that source. So far I have found no evidence that _GNU_SOURCE applies to memset/memmove/memcpy, which are the only calls I see in there that I could see impacted. Besides, for obvious compatibility reasons, I would advocate using -D_GNU_SOURCE as a compiler option if one really needs it, rather than have it in a source. Regards, /Pete [1] https://github.com/pbatard/rufus/tree/master/src/syslinux [2] http://www.ridgecrop.demon.co.uk/index.htm?fat32format.htm [3] http://rufus.akeo.ie/files/syslinux-6.03/ [4] https://github.com/geneC/syslinux/commit/e4fc443f9b70f188963ff33e0a16ccb72a553540