From fa988d29420ace0ab7940167ed5cc3c78b87beec Mon Sep 17 00:00:00 2001 From: Matt Morehouse Date: Fri, 17 Mar 2023 14:30:29 -0500 Subject: [PATCH] fuzz: add check-fuzz.sh The script runs each fuzz target on its seed corpus and prints any failures. --- tests/fuzz/check-fuzz.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 tests/fuzz/check-fuzz.sh diff --git a/tests/fuzz/check-fuzz.sh b/tests/fuzz/check-fuzz.sh new file mode 100755 index 000000000..67ce1cf55 --- /dev/null +++ b/tests/fuzz/check-fuzz.sh @@ -0,0 +1,36 @@ +#!/bin/bash -eu + +# Runs each fuzz target on its seed corpus and prints any failures. + +readonly FUZZ_DIR=$(dirname "$0") +readonly TARGETS=$(find "${FUZZ_DIR}" -type f -name "fuzz-*" ! -name "*.*") + +export UBSAN_OPTIONS="halt_on_error=1:print_stacktrace=1" + +passes=0 +fails=0 +for t in ${TARGETS}; do + target_name=$(basename "${t}") + corpus_dir="${FUZZ_DIR}/corpora/${target_name}/" + cmd="${t} -runs=0 ${corpus_dir}" + + echo -n "Checking ${target_name}... " + if output=$(${cmd} 2>&1); then + echo "PASS" + passes=$((passes + 1)) + else + echo "FAIL" + echo + echo "Failing command: ${cmd}" + echo "Output:" + echo "${output}" + echo + fails=$((fails + 1)) + fi +done + +echo +echo "TOTAL PASSED: ${passes}" +echo "TOTAL FAILED: ${fails}" + +exit ${fails}