diff options
Diffstat (limited to 'test/scudo/fsanitize.c')
-rw-r--r-- | test/scudo/fsanitize.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/scudo/fsanitize.c b/test/scudo/fsanitize.c new file mode 100644 index 000000000000..7e5d5451f726 --- /dev/null +++ b/test/scudo/fsanitize.c @@ -0,0 +1,28 @@ +// Test various -fsanitize= additional flags combinations. + +// RUN: %clang_scudo %s -o %t +// RUN: not %run %t 2>&1 | FileCheck %s + +// RUN: %clang_scudo -shared-libsan %s -o %t +// RUN: env LD_LIBRARY_PATH=`dirname %shared_libscudo`:$LD_LIBRARY_PATH not %run %t 2>&1 | FileCheck %s +// RUN: %clang_scudo -shared-libsan -fsanitize-minimal-runtime %s -o %t +// RUN: env LD_LIBRARY_PATH=`dirname %shared_minlibscudo`:$LD_LIBRARY_PATH not %run %t 2>&1 | FileCheck %s + +// RUN: %clang_scudo -static-libsan %s -o %t +// RUN: not %run %t 2>&1 | FileCheck %s +// RUN: %clang_scudo -static-libsan -fsanitize-minimal-runtime %s -o %t +// RUN: not %run %t 2>&1 | FileCheck %s + +#include <assert.h> +#include <stdlib.h> + +int main(int argc, char *argv[]) { + unsigned long *p = (unsigned long *)malloc(sizeof(unsigned long)); + assert(p); + *p = 0; + free(p); + free(p); + return 0; +} + +// CHECK: ERROR: invalid chunk state |