mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-28 22:24:28 +00:00
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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227252 91177308-0d34-0410-b5e6-96231b3b80d8
22 lines
580 B
C++
22 lines
580 B
C++
// 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();
|
|
}
|
|
}
|
|
|