From 0ae344d002755d1f218fe4fbd818a814bc3ebdbc Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 23 Jun 2019 14:31:35 -0400 Subject: Add fuzzers to exercise specific pipeline classes --- fuzz/pngpredictor_fuzzer.cc | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 fuzz/pngpredictor_fuzzer.cc (limited to 'fuzz/pngpredictor_fuzzer.cc') diff --git a/fuzz/pngpredictor_fuzzer.cc b/fuzz/pngpredictor_fuzzer.cc new file mode 100644 index 00000000..8a8c5d7d --- /dev/null +++ b/fuzz/pngpredictor_fuzzer.cc @@ -0,0 +1,52 @@ +#include +#include +#include +#include + +class FuzzHelper +{ + public: + FuzzHelper(unsigned char const* data, size_t size); + void run(); + + private: + void doChecks(); + + unsigned char const* data; + size_t size; +}; + +FuzzHelper::FuzzHelper(unsigned char const* data, size_t size) : + data(data), + size(size) +{ +} + +void +FuzzHelper::doChecks() +{ + Pl_Discard discard; + Pl_PNGFilter p("decode", &discard, Pl_PNGFilter::a_decode, 32, 1, 8); + p.write(const_cast(data), size); + p.finish(); +} + +void +FuzzHelper::run() +{ + try + { + doChecks(); + } + catch (std::runtime_error const& e) + { + std::cerr << "runtime_error: " << e.what() << std::endl; + } +} + +extern "C" int LLVMFuzzerTestOneInput(unsigned char const* data, size_t size) +{ + FuzzHelper f(data, size); + f.run(); + return 0; +} -- cgit v1.2.3-54-g00ecf