diff options
author | Matt Morehouse <mascasa@google.com> | 2019-10-02 20:13:21 +0000 |
---|---|---|
committer | Matt Morehouse <mascasa@google.com> | 2019-10-02 20:13:21 +0000 |
commit | c88ce270afe17bf35376a89c8b929eee93764e07 (patch) | |
tree | b696e8ea2d8cd0d90b6617d50c5b77c357bcd6a6 /test/sanitizer_common | |
parent | 5f8a0110ec12ac0b7c86545c5058ab287c070b5e (diff) | |
download | compiler-rt-c88ce270afe17bf35376a89c8b929eee93764e07.tar.gz |
[sanitizer_common] Rename OnPrint to __sanitizer_on_print.
Summary:
https://reviews.llvm.org/D28596 exposed OnPrint in the global namespace,
which can cause collisions with user-defined OnPrint() functions.
Reviewers: vitalybuka, dvyukov
Reviewed By: vitalybuka, dvyukov
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67987
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@373518 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/sanitizer_common')
-rw-r--r-- | test/sanitizer_common/TestCases/onprint.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/sanitizer_common/TestCases/onprint.cpp b/test/sanitizer_common/TestCases/onprint.cpp new file mode 100644 index 000000000..4b3f31e7b --- /dev/null +++ b/test/sanitizer_common/TestCases/onprint.cpp @@ -0,0 +1,31 @@ +// Checks that the __sanitizer_on_print hook gets the exact same sanitizer +// report as what is printed to stderr. +// +// RUN: %clangxx %s -o %t +// RUN: %run %t %t-onprint.txt 2>%t-stderr.txt || true +// RUN: diff %t-onprint.txt %t-stderr.txt + +#include <cassert> +#include <cstdio> +#include <cstdlib> + +FILE *f; +volatile void *buf; +volatile char sink; + +extern "C" void __sanitizer_on_print(const char *str) { + fprintf(f, "%s", str); + fflush(f); +} + +int main(int argc, char *argv[]) { + assert(argc >= 2); + f = fopen(argv[1], "w"); + + // Use-after-free to trigger ASan/TSan reports. + void *ptr = malloc(1); + buf = ptr; + free(ptr); + sink = *static_cast<char *>(ptr); + return 0; +} |