_FORTIFY_SOURCE for std::vector

Florian Weimer fweimer@redhat.com
Fri Jun 1 15:01:00 GMT 2012


On 06/01/2012 03:34 PM, Jakub Jelinek wrote:
> The standard -D_FORTIFY_SOURCE failure is __chk_fail (), so IMNSHO
> if this is presented as _FORTIFY_SOURCE check, it should call that
> and not some other function.  You'd need to use
> #if __USE_FORTIFY_LEVEL>  0
> test instead (as __chk_fail is only provided by glibcs that on
> _FORTIFY_SOURCE definition sets __USE_FORTIFY_LEVEL), but it would be
> consistent with all other fortification failures (and, even
> -fstack-protector failures are similar).

__chk_fail it is, then.  This means that the test case will be specific 
to GNU libc platforms.  How can I mark it as such?

> Or of course if you want it to do something else on failures, better
> enable it using a different macro.

I'm aiming for a consistent developer experience.

There is little documentation for _FORTIFY_SOURCE, and we plan to change 
that.  However, due to the way most additional checks are implemented 
(reliance upon __builtin_object_size in particular), it will always be 
magic you cannot rely on, which makes good documentation difficult.  But 
we should at least explain that!  (Obviously, the std::vector check 
doesn't share this problem.)

-- 
Florian Weimer / Red Hat Product Security Team



More information about the Libstdc++ mailing list