diff options
author | Adam Balogh <adam.balogh@ericsson.com> | 2018-07-13 13:44:44 +0000 |
---|---|---|
committer | Adam Balogh <adam.balogh@ericsson.com> | 2018-07-13 13:44:44 +0000 |
commit | bf966f523755c9f72886e90a98c15eae8d248cd8 (patch) | |
tree | 1c888c86ea410bc482db28f780b0c72d9722445f /clang/test/Analysis/cstring-plist.c | |
parent | c48aefb63bb307e1c5e843a05b01a55509c3528b (diff) | |
download | bcm5719-llvm-bf966f523755c9f72886e90a98c15eae8d248cd8.tar.gz bcm5719-llvm-bf966f523755c9f72886e90a98c15eae8d248cd8.zip |
[Analyzer] alpha.unix.cstring.OutOfBounds checker enable/disable fix
It was not possible to disable alpha.unix.cstring.OutOfBounds checker's reports
since unix.Malloc checker always implicitly enabled the filter. Moreover if the
checker was disabled from command line (-analyzer-disable-checker ..) the out
of bounds warnings were nevertheless emitted under different checker names such
as unix.cstring.NullArg, or unix.Malloc.
This patch fixes the case sot that Malloc checker only enables implicitly the
underlying modeling of strcpy, memcpy etc. but not the warning messages that
would have been emmitted by alpha.unix.cstring.OutOfBounds
Patch by: Dániel Krupp
Differential Revision: https://reviews.llvm.org/D48831
llvm-svn: 337000
Diffstat (limited to 'clang/test/Analysis/cstring-plist.c')
-rw-r--r-- | clang/test/Analysis/cstring-plist.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/clang/test/Analysis/cstring-plist.c b/clang/test/Analysis/cstring-plist.c new file mode 100644 index 00000000000..19d0e46fd36 --- /dev/null +++ b/clang/test/Analysis/cstring-plist.c @@ -0,0 +1,22 @@ +// RUN: rm -f %t +// RUN: %clang_analyze_cc1 -fblocks -analyzer-checker=core,unix.Malloc,unix.cstring.NullArg -analyzer-disable-checker=alpha.unix.cstring.OutOfBounds -analyzer-output=plist -analyzer-config path-diagnostics-alternate=false -o %t %s +// RUN: FileCheck -input-file %t %s + +typedef __typeof(sizeof(int)) size_t; +void *malloc(size_t); +void free(void *); +char *strncpy(char *restrict s1, const char *restrict s2, size_t n); + + + +void cstringchecker_bounds_nocrash() { + char *p = malloc(2); + strncpy(p, "AAA", sizeof("AAA")); // we don't expect warning as the checker is disabled + free(p); +} + +// CHECK: <key>diagnostics</key> +// CHECK-NEXT: <array> +// CHECK-NEXT: </array> +// CHECK-NEXT: </dict> +// CHECK-NEXT: </plist> |