diff options
author | Kostya Serebryany <kcc@google.com> | 2015-01-27 22:08:41 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2015-01-27 22:08:41 +0000 |
commit | d53b43fe117c619aad57b5bf80000d1617eb142d (patch) | |
tree | 71b45ceb5839c384fcd2501ad10c70f084e2f86f /llvm/lib/Fuzzer/test/ExactTest.cpp | |
parent | 7a503694febda8648e39417ba9039e3adeed5e36 (diff) | |
download | bcm5719-llvm-d53b43fe117c619aad57b5bf80000d1617eb142d.tar.gz bcm5719-llvm-d53b43fe117c619aad57b5bf80000d1617eb142d.zip |
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
Diffstat (limited to 'llvm/lib/Fuzzer/test/ExactTest.cpp')
-rw-r--r-- | llvm/lib/Fuzzer/test/ExactTest.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
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 <cstdlib> +#include <cstddef> +#include <iostream> + +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(); + } +} + |