| // 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 |
| __attribute__((disable_sanitizer_instrumentation)) extern "C" void |
| __sanitizer_on_print(const char *str) { |
| write(f, str, strlen(str)); |
| int main(int argc, char *argv[]) { |
| f = open(argv[1], O_CREAT | O_TRUNC | O_WRONLY, 0666); |
| // Use-after-free to trigger ASan/TSan reports. |
| sink = *static_cast<char *>(ptr); |