2016-12-22 10:09:26 +00:00
|
|
|
/*
|
|
|
|
__ _____ _____ _____
|
|
|
|
__| | __| | | | JSON for Modern C++ (fuzz test support)
|
2017-12-29 17:31:13 +00:00
|
|
|
| | |__ | | | | | | version 3.0.1
|
2016-12-22 10:09:26 +00:00
|
|
|
|_____|_____|_____|_|___| https://github.com/nlohmann/json
|
|
|
|
|
|
|
|
This file implements a driver for American Fuzzy Lop (afl-fuzz). It relies on
|
|
|
|
an implementation of the `LLVMFuzzerTestOneInput` function which processes a
|
|
|
|
passed byte array.
|
|
|
|
|
|
|
|
Licensed under the MIT License <http://opensource.org/licenses/MIT>.
|
|
|
|
*/
|
|
|
|
|
2016-12-25 15:06:56 +00:00
|
|
|
#include <vector> // for vector
|
|
|
|
#include <cstdint> // for uint8_t
|
|
|
|
#include <iostream> // for cin
|
2016-12-22 10:09:26 +00:00
|
|
|
|
|
|
|
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
#ifdef __AFL_HAVE_MANUAL_CONTROL
|
|
|
|
while (__AFL_LOOP(1000))
|
|
|
|
{
|
|
|
|
#endif
|
2016-12-25 15:06:56 +00:00
|
|
|
// copy stdin to byte vector
|
|
|
|
std::vector<uint8_t> vec;
|
|
|
|
char c;
|
|
|
|
while (std::cin.get(c))
|
|
|
|
{
|
|
|
|
vec.push_back(static_cast<uint8_t>(c));
|
|
|
|
}
|
|
|
|
|
|
|
|
LLVMFuzzerTestOneInput(vec.data(), vec.size());
|
2016-12-22 10:09:26 +00:00
|
|
|
#ifdef __AFL_HAVE_MANUAL_CONTROL
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
}
|