diff options
| author | Kostya Serebryany <kcc@google.com> | 2016-03-24 01:32:08 +0000 |
|---|---|---|
| committer | Kostya Serebryany <kcc@google.com> | 2016-03-24 01:32:08 +0000 |
| commit | 315167339eb5f146040033b555c00ee0671ac72a (patch) | |
| tree | 3c8c21c4fb43ce69032d958a41261c4afd5413c8 /llvm/lib/Fuzzer/test | |
| parent | 37df19ebee81322aa018af65cae57eafde6c5350 (diff) | |
| download | bcm5719-llvm-315167339eb5f146040033b555c00ee0671ac72a.tar.gz bcm5719-llvm-315167339eb5f146040033b555c00ee0671ac72a.zip | |
[libFuzzer] don't report memory leaks if we are dying due to a timeout (just use _Exit instead of exit in the timeout callback)
llvm-svn: 264237
Diffstat (limited to 'llvm/lib/Fuzzer/test')
| -rw-r--r-- | llvm/lib/Fuzzer/test/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/test/LeakTimeoutTest.cpp | 14 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/test/fuzzer-leak.test | 9 | ||||
| -rw-r--r-- | llvm/lib/Fuzzer/test/fuzzer.test | 4 |
4 files changed, 24 insertions, 4 deletions
diff --git a/llvm/lib/Fuzzer/test/CMakeLists.txt b/llvm/lib/Fuzzer/test/CMakeLists.txt index 255be9c0ccd..3bda0a99baf 100644 --- a/llvm/lib/Fuzzer/test/CMakeLists.txt +++ b/llvm/lib/Fuzzer/test/CMakeLists.txt @@ -22,6 +22,7 @@ set(Tests InitializeTest MemcmpTest LeakTest + LeakTimeoutTest NullDerefTest NthRunCrashTest RepeatedMemcmp diff --git a/llvm/lib/Fuzzer/test/LeakTimeoutTest.cpp b/llvm/lib/Fuzzer/test/LeakTimeoutTest.cpp new file mode 100644 index 00000000000..3aa56c4ef65 --- /dev/null +++ b/llvm/lib/Fuzzer/test/LeakTimeoutTest.cpp @@ -0,0 +1,14 @@ +// Test with a leak. +#include <cstdint> +#include <cstddef> + +static volatile int *Sink; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { + if (!Size) return 0; + Sink = new int; + Sink = new int; + while (Sink) *Sink = 0; // Infinite loop. + return 0; +} + diff --git a/llvm/lib/Fuzzer/test/fuzzer-leak.test b/llvm/lib/Fuzzer/test/fuzzer-leak.test new file mode 100644 index 00000000000..3690068371f --- /dev/null +++ b/llvm/lib/Fuzzer/test/fuzzer-leak.test @@ -0,0 +1,9 @@ +RUN: not LLVMFuzzer-LeakTest -runs=10 2>&1 | FileCheck %s --check-prefix=LEAK +LEAK: ERROR: LeakSanitizer: detected memory leaks +LEAK-NOT: DEATH: + +RUN: not LLVMFuzzer-LeakTimeoutTest -timeout=1 2>&1 | FileCheck %s --check-prefix=LEAK_TIMEOUT +LEAK_TIMEOUT: ERROR: libFuzzer: timeout after +LEAK_TIMEOUT-NOT: LeakSanitizer + + diff --git a/llvm/lib/Fuzzer/test/fuzzer.test b/llvm/lib/Fuzzer/test/fuzzer.test index 240209d1c02..9aca950ec45 100644 --- a/llvm/lib/Fuzzer/test/fuzzer.test +++ b/llvm/lib/Fuzzer/test/fuzzer.test @@ -69,10 +69,6 @@ RUN: LLVMFuzzer-SimpleTest %t/SUB1 -runs=0 2>&1 | FileCheck %s --check-prefix=SU SUBDIRS: READ units: 3 RUN: rm -rf %t/SUB1 -RUN: not LLVMFuzzer-LeakTest -runs=10 2>&1 | FileCheck %s --check-prefix=LEAK -LEAK: ERROR: LeakSanitizer: detected memory leaks -LEAK-NOT: DEATH: - RUN: mkdir -p %t RUN: echo abcd > %t/NthRunCrashTest.in RUN: LLVMFuzzer-NthRunCrashTest %t/NthRunCrashTest.in |

