diff options
author | Zack Weinberg <zackw@panix.com> | 2015-08-14 09:21:44 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-08-14 22:40:19 -0400 |
commit | 8ff5e0ec497613e578219c9c3d49053c550b9269 (patch) | |
tree | d35487ff0ad78c4f404883dcb2a0f7835a85137e /string/bits | |
parent | 739babd775d4b69525e3494cad4310742a9b360a (diff) | |
download | glibc-8ff5e0ec497613e578219c9c3d49053c550b9269.tar.gz glibc-8ff5e0ec497613e578219c9c3d49053c550b9269.tar.xz glibc-8ff5e0ec497613e578219c9c3d49053c550b9269.zip |
stpncpy: fix size checking [BZ #18975]
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.
Diffstat (limited to 'string/bits')
-rw-r--r-- | string/bits/string3.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/string/bits/string3.h b/string/bits/string3.h index f48293595a..4d11aa6ac2 100644 --- a/string/bits/string3.h +++ b/string/bits/string3.h @@ -136,7 +136,7 @@ __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))) + && (!__builtin_constant_p (__n) || __n > __bos (__dest))) return __stpncpy_chk (__dest, __src, __n, __bos (__dest)); return __stpncpy_alias (__dest, __src, __n); } |