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.
Showing
- gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c 43 additions, 0 deletionsgcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c
- gcc/testsuite/gcc.dg/builtin-dynamic-object-size-1.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/builtin-dynamic-object-size-1.c
- gcc/testsuite/gcc.dg/builtin-dynamic-object-size-2.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/builtin-dynamic-object-size-2.c
- gcc/testsuite/gcc.dg/builtin-dynamic-object-size-3.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/builtin-dynamic-object-size-3.c
- gcc/testsuite/gcc.dg/builtin-dynamic-object-size-4.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/builtin-dynamic-object-size-4.c
- gcc/testsuite/gcc.dg/builtin-object-size-1.c 93 additions, 1 deletiongcc/testsuite/gcc.dg/builtin-object-size-1.c
- gcc/testsuite/gcc.dg/builtin-object-size-2.c 93 additions, 1 deletiongcc/testsuite/gcc.dg/builtin-object-size-2.c
- gcc/testsuite/gcc.dg/builtin-object-size-3.c 94 additions, 1 deletiongcc/testsuite/gcc.dg/builtin-object-size-3.c
- gcc/testsuite/gcc.dg/builtin-object-size-4.c 93 additions, 1 deletiongcc/testsuite/gcc.dg/builtin-object-size-4.c
- gcc/tree-object-size.cc 80 additions, 2 deletionsgcc/tree-object-size.cc
Loading
Please register or sign in to comment