[Bug middle-end/54582] gap in FORTIFY checking of buffer lengths

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Feb 6 12:41:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54582

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-02-06 12:41:09 UTC ---
It isn't that easy.  For %'s you really have to parse all the characters after
% and figure out where the format specifier ends.  Users can have printf hooks
installed, so it certainly needs to give up any time it sees something it
doesn't fully understand.  In that case I guess it could safely just assume the
lower bound as if the string ended on the % after which it doesn't understand
the letters.  Note, that this is just about the compile time warning, the code
will fail at runtime the same way in the first as in the second case.

So, if we are going to do something about this, either we could do something
very simple, like strchr (str, '%') - str as low bound guess, or reuse the
c-format tables somehow (but they are in the FE, while this is in middle-end),
or write a simple parse of few most common formatting specifiers and give up on
anything else.



More information about the Gcc-bugs mailing list