libiberty: avoid reading past end of buffer in strndup/xstrndup (PR c/78498)
commit39181f37b6d112d0679c780eaa7cd66d68cf80ca
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Nov 2016 14:50:43 +0000 (30 14:50 +0000)
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Nov 2016 14:50:43 +0000 (30 14:50 +0000)
treef30b1f41724d3288f8bdba58298d4d1aecd8960d
parentd21e2a06a77e072484c806fde17cac54a6b433ba
libiberty: avoid reading past end of buffer in strndup/xstrndup (PR c/78498)

gcc/ChangeLog:
PR c/78498
* selftest.c (selftest::assert_strndup_eq): New function.
(selftest::test_strndup): New function.
(selftest::test_libiberty): New function.
(selftest::selftest_c_tests): Call test_libiberty.

gcc/testsuite/ChangeLog:
PR c/78498
* gcc.dg/format/pr78494.c: New test case.

libiberty/ChangeLog:
PR c/78498
* strndup.c (strlen): Delete decl.
(strnlen): Add decl.
(strndup): Call strnlen rather than strlen.
* xstrndup.c (xstrndup): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@243030 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/selftest.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/format/pr78494.c [new file with mode: 0644]
libiberty/ChangeLog
libiberty/strndup.c
libiberty/xstrndup.c