From def05d0ad12e8145437a29b90a9b48011ec4f401 Mon Sep 17 00:00:00 2001 From: Tanuj Garg Date: Fri, 29 May 2020 22:35:31 +0530 Subject: [PATCH] [Experiment] temp fuzzer removed --- Makefile | 9 ----- test/Makefile | 4 +-- test/src/fuzzer-temp.cpp | 73 ---------------------------------------- 3 files changed, 1 insertion(+), 85 deletions(-) delete mode 100644 test/src/fuzzer-temp.cpp diff --git a/Makefile b/Makefile index 8f35dbdf2..08c40d2f3 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,6 @@ all: @echo "fuzz_testing_cbor - prepare fuzz testing of the CBOR parser" @echo "fuzz_testing_msgpack - prepare fuzz testing of the MessagePack parser" @echo "fuzz_testing_ubjson - prepare fuzz testing of the UBJSON parser" - @echo "fuzz_testing_temp - prepare fuzz testing of the temp" @echo "json_unit - create single-file test executable" @echo "pedantic_clang - run Clang with maximal warning flags" @echo "pedantic_gcc - run GCC with maximal warning flags" @@ -403,14 +402,6 @@ fuzz_testing_ubjson: find test/data -size -5k -name *.ubjson | xargs -I{} cp "{}" fuzz-testing/testcases @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" -fuzz_testing_temp: - rm -fr fuzz-testing - mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out - $(MAKE) temp_fuzzer -C test CXX=afl-clang++ - mv test/temp_fuzzer fuzz-testing/fuzzer - find test/data -size -5k -name *.bson | xargs -I{} cp "{}" fuzz-testing/testcases - @echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer" - fuzzing-start: afl-fuzz -S fuzzer1 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & afl-fuzz -S fuzzer2 -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzzer > /dev/null & diff --git a/test/Makefile b/test/Makefile index 9b8150b51..eeb16c351 100644 --- a/test/Makefile +++ b/test/Makefile @@ -94,7 +94,7 @@ check: $(OBJECTS) $(TESTCASES) ############################################################################## FUZZER_ENGINE = src/fuzzer-driver_afl.cpp -FUZZERS = parse_afl_fuzzer parse_bson_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer parse_ubjson_fuzzer temp_fuzzer +FUZZERS = parse_afl_fuzzer parse_bson_fuzzer parse_cbor_fuzzer parse_msgpack_fuzzer parse_ubjson_fuzzer fuzzers: $(FUZZERS) parse_afl_fuzzer: @@ -112,5 +112,3 @@ parse_msgpack_fuzzer: parse_ubjson_fuzzer: $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-parse_ubjson.cpp -o $@ -temp_fuzzer: - $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(FUZZER_ENGINE) src/fuzzer-temp.cpp -o $@ diff --git a/test/src/fuzzer-temp.cpp b/test/src/fuzzer-temp.cpp deleted file mode 100644 index b1b25d84d..000000000 --- a/test/src/fuzzer-temp.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 3.7.3 -|_____|_____|_____|_|___| https://github.com/nlohmann/json - -This file implements a parser test suitable for fuzz testing. Given a byte -array data, it performs the following steps: - -- j1 = from_bson(data) -- vec = to_bson(j1) -- j2 = from_bson(vec) -- assert(j1 == j2) - -The provided function `LLVMFuzzerTestOneInput` can be used in different fuzzer -drivers. - -Licensed under the MIT License . -*/ - -#include -#include -#include - -using json = nlohmann::json; - -// see http://llvm.org/docs/LibFuzzer.html -extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) -{ - try - { - // step 1: parse input - std::vector vec1(data, data + size); - json j1 = json::from_bson(vec1); - - if (j1.is_discarded()) - { - return 0; - } - - try - { - // step 2: round trip - std::vector vec2 = json::to_bson(j1); - - // parse serialization - json j2 = json::from_bson(vec2); - - // serializations must match - assert(json::to_bson(j2) == vec2); - } - catch (const json::parse_error&) - { - // parsing a BSON serialization must not fail - assert(false); - } - } - catch (const json::parse_error&) - { - // parse errors are ok, because input may be random bytes - } - catch (const json::type_error&) - { - // type errors can occur during parsing, too - } - catch (const json::out_of_range&) - { - // out of range errors can occur during parsing, too - } - - // return 0 - non-zero return values are reserved for future use - return 0; -}