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/InfiniteTest.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 llvm/lib/Fuzzer/test/InfiniteTest.cpp (limited to 'llvm/lib/Fuzzer/test/InfiniteTest.cpp') diff --git a/llvm/lib/Fuzzer/test/InfiniteTest.cpp b/llvm/lib/Fuzzer/test/InfiniteTest.cpp new file mode 100644 index 00000000000..9f4864abdd4 --- /dev/null +++ b/llvm/lib/Fuzzer/test/InfiniteTest.cpp @@ -0,0 +1,19 @@ +// Simple test for a fuzzer. The fuzzer must find the string "Hi!". +#include +#include +#include + +static volatile int Sink; + +extern "C" void TestOneInput(const uint8_t *Data, size_t Size) { + if (Size > 0 && Data[0] == 'H') { + Sink = 1; + if (Size > 1 && Data[1] == 'i') { + Sink = 2; + if (Size > 2 && Data[2] == '!') { + Size = 2; + } + } + } +} + -- cgit v1.2.3