summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/test
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2016-02-12 02:32:03 +0000
committerKostya Serebryany <kcc@google.com>2016-02-12 02:32:03 +0000
commit9d14e4bb1523f9d29ea1f26af7d0294013682cea (patch)
tree52b0cd362b8385ac0705ecc0a31886f17e2927e5 /llvm/lib/Fuzzer/test
parent39a84d0b9bd4865ea01e8c6d6c99d8f9d294da81 (diff)
downloadbcm5719-llvm-9d14e4bb1523f9d29ea1f26af7d0294013682cea.tar.gz
bcm5719-llvm-9d14e4bb1523f9d29ea1f26af7d0294013682cea.zip
[libFuzzer] make -runs=N flag also affect the simple runner (will execute every input N times)
llvm-svn: 260649
Diffstat (limited to 'llvm/lib/Fuzzer/test')
-rw-r--r--llvm/lib/Fuzzer/test/CMakeLists.txt1
-rw-r--r--llvm/lib/Fuzzer/test/NthRunCrashTest.cpp15
-rw-r--r--llvm/lib/Fuzzer/test/fuzzer.test8
3 files changed, 23 insertions, 1 deletions
diff --git a/llvm/lib/Fuzzer/test/CMakeLists.txt b/llvm/lib/Fuzzer/test/CMakeLists.txt
index c9ccf9b565e..1443dc58eef 100644
--- a/llvm/lib/Fuzzer/test/CMakeLists.txt
+++ b/llvm/lib/Fuzzer/test/CMakeLists.txt
@@ -22,6 +22,7 @@ set(Tests
MemcmpTest
LeakTest
NullDerefTest
+ NthRunCrashTest
RepeatedMemcmp
SimpleCmpTest
SimpleDictionaryTest
diff --git a/llvm/lib/Fuzzer/test/NthRunCrashTest.cpp b/llvm/lib/Fuzzer/test/NthRunCrashTest.cpp
new file mode 100644
index 00000000000..03d03d00db6
--- /dev/null
+++ b/llvm/lib/Fuzzer/test/NthRunCrashTest.cpp
@@ -0,0 +1,15 @@
+// Crash on the N-th execution.
+#include <cstdint>
+#include <cstddef>
+#include <iostream>
+
+static int Counter;
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
+ if (Counter++ == 1000) {
+ std::cout << "BINGO; Found the target, exiting\n";
+ exit(1);
+ }
+ return 0;
+}
+
diff --git a/llvm/lib/Fuzzer/test/fuzzer.test b/llvm/lib/Fuzzer/test/fuzzer.test
index a38e6a208ec..aadff795ed4 100644
--- a/llvm/lib/Fuzzer/test/fuzzer.test
+++ b/llvm/lib/Fuzzer/test/fuzzer.test
@@ -53,10 +53,16 @@ RUN: echo aaa > %tmp/SINGLE_INPUTS/aaa
RUN: echo bbb > %tmp/SINGLE_INPUTS/bbb
RUN: LLVMFuzzer-SimpleTest %tmp/SINGLE_INPUTS/aaa %tmp/SINGLE_INPUTS/bbb 2>&1 | FileCheck %s --check-prefix=SINGLE_INPUTS
RUN: rm -rf %tmp/SINGLE_INPUTS
-SINGLE_INPUTS: LLVMFuzzer-SimpleTest: Running 2 inputs.
+SINGLE_INPUTS: LLVMFuzzer-SimpleTest: Running 2 inputs 1 time(s) each.
SINGLE_INPUTS: aaa:
SINGLE_INPUTS: bbb:
RUN: not LLVMFuzzer-LeakTest -runs=10 2>&1 | FileCheck %s --check-prefix=LEAK
LEAK: ERROR: LeakSanitizer: detected memory leaks
LEAK-NOT: DEATH:
+
+RUN: echo abcd > %t/NthRunCrashTest.in
+RUN: LLVMFuzzer-NthRunCrashTest %t/NthRunCrashTest.in
+RUN: LLVMFuzzer-NthRunCrashTest %t/NthRunCrashTest.in -runs=10
+RUN: not LLVMFuzzer-NthRunCrashTest %t/NthRunCrashTest.in -runs=10000 2>&1 | FileCheck %s
+RUN: rm %t/NthRunCrashTest.in
OpenPOWER on IntegriCloud