From d53b43fe117c619aad57b5bf80000d1617eb142d Mon Sep 17 00:00:00 2001 From: Kostya Serebryany Date: Tue, 27 Jan 2015 22:08:41 +0000 Subject: Add a Fuzzer library Summary: A simple genetic in-process coverage-guided fuzz testing library. I've used this fuzzer to test clang-format (it found 12+ bugs, thanks djasper@ for the fixes!) and it may also help us test other parts of LLVM. So why not keep it in the LLVM repository? I plan to add the cmake build rules later (in a separate patch, if that's ok) and also add a clang-format-fuzzer target. See README.txt for details. Test Plan: Tests will follow separately. Reviewers: djasper, chandlerc, rnk Reviewed By: rnk Subscribers: majnemer, ygribov, dblaikie, llvm-commits Differential Revision: http://reviews.llvm.org/D7184 llvm-svn: 227252 --- llvm/lib/Fuzzer/test/ExactTest.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 llvm/lib/Fuzzer/test/ExactTest.cpp (limited to 'llvm/lib/Fuzzer/test/ExactTest.cpp') diff --git a/llvm/lib/Fuzzer/test/ExactTest.cpp b/llvm/lib/Fuzzer/test/ExactTest.cpp new file mode 100644 index 00000000000..662dd333eea --- /dev/null +++ b/llvm/lib/Fuzzer/test/ExactTest.cpp @@ -0,0 +1,21 @@ +// Simple test for a fuzzer. The fuzzer must find the string "FUZZER". +#include +#include +#include + +static volatile int Sink; + +extern "C" void TestOneInput(const uint8_t *Data, size_t Size) { + int bits = 0; + if (Size > 0 && Data[0] == 'F') bits |= 1; + if (Size > 1 && Data[1] == 'U') bits |= 2; + if (Size > 2 && Data[2] == 'Z') bits |= 4; + if (Size > 3 && Data[3] == 'Z') bits |= 8; + if (Size > 4 && Data[4] == 'E') bits |= 16; + if (Size > 5 && Data[5] == 'R') bits |= 32; + if (bits == 63) { + std::cerr << "BINGO!\n"; + abort(); + } +} + -- cgit v1.2.3