[PATCH] shell32: use flexible arrays to avoid fortify failures

Mike Frysinger vapier at gentoo.org
Sun Sep 19 13:53:30 CDT 2010


On Sunday, September 19, 2010 08:58:42 Alexandre Julliard wrote:
> Mike Frysinger writes:
> > Newer versions of gcc/glibc with fortify checks enabled will complain
> > about the handling of the network's szNames field.  Currently it is
> > always defined with a length of one which means writing more then a
> > 
> > single byte will trigger:
> > 	In function 'strcpy', inlined from '_ILCreateEntireNetwork' at
> > 	dlls/shell32/pidl.c:1762:15:
> > 	warning: call to __builtin___strcpy_chk will always overflow destination
> > 	buffer
> > 
> > and then at runtime, we hit an abort().
> > 
> > Since this field is really serving as the header to an arbitrary buffer,
> > using a flexible array instead should solve the issue.
> 
> What you want is ANYSIZE_ARRAY, which already exists.

i dont see how that would help.  the code is currently:
typedef struct ... {
	...
	CHAR foo[1];
} ...;

it needs to be "foo[]".  ANYSIZE_ARRAY is defined as 1, so once the 
preprocessor is done, we're right back where we started.  i cant change the 
value of ANYSIZE_ARRAY to nothing because some code uses this define in 
multiplication to calculate the size of objects.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20100919/edfdc362/attachment.pgp>


More information about the wine-devel mailing list