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