summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/test
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-03-24 01:32:08 +0000
committerKostya Serebryany <kcc@google.com>2016-03-24 01:32:08 +0000
commit315167339eb5f146040033b555c00ee0671ac72a (patch)
tree3c8c21c4fb43ce69032d958a41261c4afd5413c8 /llvm/lib/Fuzzer/test
parent37df19ebee81322aa018af65cae57eafde6c5350 (diff)
downloadbcm5719-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.txt1
-rw-r--r--llvm/lib/Fuzzer/test/LeakTimeoutTest.cpp14
-rw-r--r--llvm/lib/Fuzzer/test/fuzzer-leak.test9
-rw-r--r--llvm/lib/Fuzzer/test/fuzzer.test4
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
OpenPOWER on IntegriCloud