simdjson/fuzz
Paul Dreik 6ecbcc7c19
add multi implementation fuzzer (#1162)
This adds a fuzzer which parses the same input using all the available implementations (haswell, westmere, fallback on x64).

This should get the otherwise uncovered sourcefiles (mostly fallback) to show up in the fuzz coverage.
For instance, the fallback directory has only one line covered.
As of the 20200909 report, 1866 lines are covered out of 4478.

Also, it will detect if the implementations behave differently:

    by making sure they all succeed, or all error
    turning the parsed data into text again, should produce equal results

While at it, I corrected some minor things:

    clean up building too many variants, run with forced implementation (closes #815 )
    always store crashes as artefacts, good in case the fuzzer finds something
    return value of the fuzzer function should always be 0
    reduce log spam
    introduce max size for the seed corpus and the CI fuzzer
2020-09-11 23:46:22 +02:00
..
CMakeLists.txt add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
Fuzzing.md improve the fuzzer documentation, refresh links (#697) 2020-04-12 17:49:40 -04:00
NullBuffer.h add new fuzzers for print_json and dump_raw_tape (#416) 2019-12-27 13:42:44 -05:00
build_corpus.sh add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
build_fuzzer_variants.sh add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
build_like_ossfuzz.sh add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
fuzz_dump.cpp add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
fuzz_dump_raw_tape.cpp add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
fuzz_implementations.cpp add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
fuzz_minify.cpp add multi implementation fuzzer (#1162) 2020-09-11 23:46:22 +02:00
fuzz_parser.cpp Prefixing macros (issue 1035) (#1124) 2020-08-18 18:25:36 -04:00
fuzz_print_json.cpp Switch from get(v,e) to e = get(v) 2020-06-20 17:57:09 -07:00
main.cpp add ossfuzz support (#362) 2019-11-08 10:32:43 -05:00
measure_coverage.sh Only build fuzzers when fuzzing. (#822) 2020-04-27 16:02:19 -04:00
ossfuzz.sh Only build fuzzers when fuzzing. (#822) 2020-04-27 16:02:19 -04:00