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

Alexandre Julliard julliard at winehq.org
Mon Sep 20 05:49:20 CDT 2010


Mike Frysinger <vapier at gentoo.org> writes:

> On Sunday, September 19, 2010 17:17:53 Alexandre Julliard wrote:
>> Mike Frysinger writes:
>> > 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.
>> 
>> True, you don't want to change the public one, but you can define a
>> shell32-specific version of it. At least then it looks like a normal
>> array declaration.
>
> what do you mean by "public" ?  the header i'm changing (dlls/shell32/pidl.h) 
> isnt exported during `make install` that i can see.  so only wine itself will 
> be reading this header, and i think all consumers of it internally should be 
> getting "foo[]".

Yes. My initial thought was that you could improve the global
ANYSIZE_ARRAY, but as you pointed out that's not a good idea.  What you
should do then is define SHELL32_ANYSIZE_ARRAY in pidl.h, that you use
only in pidl.h, and not touch the global headers at all.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list