[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