Possible bug in fortified stpncpy
Zack Weinberg
zackw@panix.com
Sat Aug 8 21:06:00 GMT 2015
GCC doesn't have a fortification builtin for stpncpy, so bits/string3.h has
__fortify_function char *
__NTH (stpncpy (char *__dest, const char *__src, size_t __n))
{
if (__bos (__dest) != (size_t) -1
&& (!__builtin_constant_p (__n) || __n <= __bos (__dest)))
return __stpncpy_chk (__dest, __src, __n, __bos (__dest));
return __stpncpy_alias (__dest, __src, __n);
}
I think the last clause of the conditional,
|| __n <= __bos (__dest)
may be backward. The code should call the runtime-checking function
if __n is not constant, or if __n is known to be LARGER than the size
of the destination. Ne?
zw
More information about the Libc-alpha
mailing list