diff options
author | Anna Zaks <ganna@apple.com> | 2012-02-24 16:49:41 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-02-24 16:49:41 +0000 |
commit | e55b03a6e44b99c1cd77b8ea5e4d836c28948904 (patch) | |
tree | 9c3aeadd8eb3774e7ced0e6fce0ac9167064c49e /test/Analysis/malloc-interprocedural.c | |
parent | a0889a8c3299b1950e0a2dfa1d1656e5aa60f193 (diff) |
[analyzer] We were silently stopping exploring the path after
visiting 'return;' statement!
This most likely caused us to skip a bunch of code when analyzing with
inlining.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151368 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis/malloc-interprocedural.c')
-rw-r--r-- | test/Analysis/malloc-interprocedural.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/Analysis/malloc-interprocedural.c b/test/Analysis/malloc-interprocedural.c index d3a2ea7508..0cdd9fb281 100644 --- a/test/Analysis/malloc-interprocedural.c +++ b/test/Analysis/malloc-interprocedural.c @@ -69,3 +69,19 @@ void test5() { int *data; my_free1((int*)data); } + +// Test that we keep processing after 'return;' +void fooWithEmptyReturn(int x) { + if (x) + return; + x++; + return; +} + +int uafAndCallsFooWithEmptyReturn() { + int *x = (int*)malloc(12); + free(x); + fooWithEmptyReturn(12); + return *x; // expected-warning {{Use of memory after it is freed}} +} + |