[syslinux] [PATCH 0/5] fix installer issues and enable some MSVC compatibility

Pete Batard pete at akeo.ie
Wed Feb 24 05:02:12 PST 2016


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 

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 

o [PATCH 4/5] installers: fix a possible buffer overflow when looking 
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.



[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/

More information about the Syslinux mailing list