]> gcc.gnu.org Git - gcc.git/commit
tree-object-size: Support strndup and strdup
authorSiddhesh Poyarekar <siddhesh@gotplt.org>
Fri, 4 Nov 2022 12:42:57 +0000 (08:42 -0400)
committerSiddhesh Poyarekar <siddhesh@gotplt.org>
Tue, 22 Nov 2022 22:54:06 +0000 (17:54 -0500)
commite5cfb9cac1d7aba9a8ea73bfe7922cfaff9d61f3
tree082f70249752af626fa1e104f2547d9fdd1845b8
parentec7c796de020cb5cd955aa5b26c92b1da49d6076
tree-object-size: Support strndup and strdup

Use string length of input to strdup to determine the usable size of the
resulting object.  Avoid doing the same for strndup since there's a
chance that the input may be too large, resulting in an unnecessary
overhead or worse, the input may not be NULL terminated, resulting in a
crash where there would otherwise have been none.

gcc/ChangeLog:

* tree-object-size.cc (todo): New variable.
(object_sizes_execute): Use it.
(strdup_object_size): New function.
(call_object_size): Use it.

gcc/testsuite/ChangeLog:

* gcc.dg/builtin-dynamic-object-size-0.c (test_strdup,
test_strndup, test_strdup_min, test_strndup_min): New tests.
(main): Call them.
* gcc.dg/builtin-dynamic-object-size-1.c: Silence overread
warnings.
* gcc.dg/builtin-dynamic-object-size-2.c: Likewise.
* gcc.dg/builtin-dynamic-object-size-3.c: Likewise.
* gcc.dg/builtin-dynamic-object-size-4.c: Likewise.
* gcc.dg/builtin-object-size-1.c: Silence overread warnings.
Declare free, strdup and strndup.
(test11): New test.
(main): Call it.
* gcc.dg/builtin-object-size-2.c: Silence overread warnings.
Declare free, strdup and strndup.
(test9): New test.
(main): Call it.
* gcc.dg/builtin-object-size-3.c: Silence overread warnings.
Declare free, strdup and strndup.
(test11): New test.
(main): Call it.
* gcc.dg/builtin-object-size-4.c: Silence overread warnings.
Declare free, strdup and strndup.
(test9): New test.
(main): Call it.
gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c
gcc/testsuite/gcc.dg/builtin-dynamic-object-size-1.c
gcc/testsuite/gcc.dg/builtin-dynamic-object-size-2.c
gcc/testsuite/gcc.dg/builtin-dynamic-object-size-3.c
gcc/testsuite/gcc.dg/builtin-dynamic-object-size-4.c
gcc/testsuite/gcc.dg/builtin-object-size-1.c
gcc/testsuite/gcc.dg/builtin-object-size-2.c
gcc/testsuite/gcc.dg/builtin-object-size-3.c
gcc/testsuite/gcc.dg/builtin-object-size-4.c
gcc/tree-object-size.cc
This page took 0.072339 seconds and 5 git commands to generate.