mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
500e4c3572
This builds the CI fuzzers with the intended clang version. It also allows users to set the clang version locally, in case they need to. It also switches the CI fuzzers to use an optimized sanitizer build, to do something oss-fuzz doesn't and get more done in the short time the CI fuzzer runs.
55 lines
1.7 KiB
Bash
Executable File
55 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# This script is to make a quick check that the fuzzers work,
|
|
# good when working locally developing the fuzzers or making
|
|
# sure code changes still pass the fuzzers.
|
|
#
|
|
# It will download the corpus from bintray (kept up to date
|
|
# by the crontab github actions) unless a local out/ directory
|
|
# already exists.
|
|
#
|
|
# Run it standing in the root of the simdjson repository.
|
|
#
|
|
# By Paul Dreik 20201003
|
|
|
|
set -eu
|
|
|
|
for prog in wget tar cmake; do
|
|
if ! which $prog >/dev/null; then
|
|
echo please install $prog
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
#download the corpus if it does not already exist
|
|
if [ ! -d out ] ; then
|
|
wget --quiet https://dl.bintray.com/pauldreik/simdjson-fuzz-corpus/corpus/corpus.tar
|
|
tar xf corpus.tar && rm corpus.tar
|
|
fi
|
|
|
|
# By default, use the debug friendly variant since this script is intended
|
|
# for developers reproducing bugs/validating fixes locally.
|
|
builddir=build-sanitizers-O0
|
|
#...but feel free to use this one instead, if you want to build coverage fast.
|
|
#builddir=build-fast
|
|
|
|
if [ ! -d $builddir ] ; then
|
|
fuzz/build_fuzzer_variants.sh
|
|
else
|
|
cmake --build $builddir --target all_fuzzers
|
|
fi
|
|
|
|
fuzzernames=$(cmake --build $builddir --target print_all_fuzzernames |tail -n1)
|
|
|
|
for fuzzer in $fuzzernames ; do
|
|
exe=$builddir/fuzz/$fuzzer
|
|
shortname=$(echo $fuzzer |cut -f2- -d_)
|
|
echo found fuzzer $shortname with executable $exe
|
|
mkdir -p out/$shortname
|
|
others=$(find out -type d -not -name $shortname -not -name out -not -name cmin)
|
|
$exe -max_total_time=20 -max_len=4000 out/$shortname $others
|
|
echo "*************************************************************************"
|
|
done
|
|
echo "all is good, no errors found in any of these fuzzers: $fuzzernames"
|
|
|