Add fuzz testing using american fuzzy lop

Existing tests: block, transaction, signature, cold outputs,
cold transaction.

Data for these is in tests/data/fuzz.

A convenience shell script is in contrib/fuzz_testing/fuzz.sh, eg:

contrib/fuzz_testing/fuzz.sh signature

The fuzzer will run indefinitely, ^C to stop.

Fuzzing is currently supported for GCC only. I can't get CLANG
to build Monero here as it dies on some system headers, so if
someone wants to make it work on both, that'd be great.
In particular, the __AFL_LOOP construct should be made to work
so that a given run can fuzz multiple inputs, as the C++ load
time is substantial.
This commit is contained in:
moneromooo-monero
2017-06-24 12:38:41 +01:00
parent ae8841f2ab
commit 841231e5bd
20 changed files with 710 additions and 0 deletions
+2
View File
@@ -77,6 +77,7 @@ file(COPY
DESTINATION data)
add_subdirectory(core_tests)
add_subdirectory(fuzz)
add_subdirectory(crypto)
add_subdirectory(functional_tests)
add_subdirectory(performance_tests)
@@ -114,6 +115,7 @@ set(enabled_tests
hash
performance_tests
core_proxy
fuzz
unit_tests)
add_custom_target(tests DEPENDS enabled_tests)