diff options
author | Daniel Marjamaki <daniel.marjamaki@evidente.se> | 2017-05-02 11:46:12 +0000 |
---|---|---|
committer | Daniel Marjamaki <daniel.marjamaki@evidente.se> | 2017-05-02 11:46:12 +0000 |
commit | a43a8f5c5ed0757caad574ec0567a211b9e67f78 (patch) | |
tree | 958c95767664f326bf258e093e5f00073943269f /clang/test/Analysis/malloc.c | |
parent | 24d361f7bf66cc3f6c131223fec956d225f27680 (diff) | |
download | bcm5719-llvm-a43a8f5c5ed0757caad574ec0567a211b9e67f78.tar.gz bcm5719-llvm-a43a8f5c5ed0757caad574ec0567a211b9e67f78.zip |
[analyzer] Detect bad free of function pointers
Differential Revision: https://reviews.llvm.org/D31650
llvm-svn: 301913
Diffstat (limited to 'clang/test/Analysis/malloc.c')
-rw-r--r-- | clang/test/Analysis/malloc.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/Analysis/malloc.c b/clang/test/Analysis/malloc.c index d5f2cfedd18..4c364ebd9a2 100644 --- a/clang/test/Analysis/malloc.c +++ b/clang/test/Analysis/malloc.c @@ -1774,6 +1774,16 @@ int testNoCheckerDataPropogationFromLogicalOpOperandToOpResult(void) { return ok; // no warning } +void (*fnptr)(int); +void freeIndirectFunctionPtr() { + void *p = (void *)fnptr; + free(p); // expected-warning {{Argument to free() is a function pointer}} +} + +void freeFunctionPtr() { + free((void *)fnptr); // expected-warning {{Argument to free() is a function pointer}} +} + // ---------------------------------------------------------------------------- // False negatives. |