diff options
author | David Malcolm <dmalcolm@redhat.com> | 2023-03-13 14:53:05 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2023-03-13 14:53:05 -0400 |
commit | 23532dac3f602d6c29f5b7062c7fe30905061764 (patch) | |
tree | afe21a4ac592dfe60f25aa9a6d0a0c8b9c2c1089 /gcc | |
parent | 129664c67b774511b53bfeee9e80a142ae7cd026 (diff) | |
download | gcc-23532dac3f602d6c29f5b7062c7fe30905061764.zip gcc-23532dac3f602d6c29f5b7062c7fe30905061764.tar.gz gcc-23532dac3f602d6c29f5b7062c7fe30905061764.tar.bz2 |
testsuite: add test coverage for analyzer leak false +ve [PR105906]
Adding regression test coverage; I believe I fixed this leak
false positive with r13-5113-g688fc162b76dc6.
gcc/testsuite/ChangeLog:
PR analyzer/105906
* gcc.dg/analyzer/leak-pr105906.c: New test.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c b/gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c new file mode 100644 index 0000000..72901e4 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c @@ -0,0 +1,32 @@ +/* { dg-additional-options "-Wno-analyzer-too-complex" } */ + +#define NULL ((void *)0) + +#define LEN 64 + +char ** +epystr_explode(const char *delim, char *str) +{ + char **out = NULL; + int i; + + if (str == NULL || delim == NULL) + return NULL; + + out = __builtin_malloc(LEN * sizeof(char *)); + if (out == NULL) + return NULL; + + for (i = 0; i < LEN; i++) { + out[i] = __builtin_strdup("bla"); + if (out[i] == NULL) /* { dg-bogus "leak" } */ + goto freem; + } + return out; + +freem: + while (--i >= 0) + __builtin_free(out[i]); + __builtin_free(out); + return NULL; +} |