38 lines
957 B
Bash
Executable file
38 lines
957 B
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
source $(dirname "$0")/tools.sh
|
|
|
|
target="$1"
|
|
corpus="$2"
|
|
shift 2
|
|
|
|
# Fetch artifact if needed.
|
|
fetch_dist
|
|
|
|
export DIST=${PWD}/dist
|
|
|
|
cp -a "${VCS_PATH}/nss" .
|
|
|
|
# Create and change to corpus directory.
|
|
mkdir -p "nss/fuzz/corpus/$corpus"
|
|
pushd "nss/fuzz/corpus/$corpus"
|
|
|
|
# Fetch and unzip the public OSS-Fuzz corpus. Handle the case that there
|
|
# may be no corpus yet for new fuzz targets.
|
|
code=$(curl -w "%{http_code}" -O "https://storage.googleapis.com/nss-backup.clusterfuzz-external.appspot.com/corpus/libFuzzer/nss_$corpus/public.zip")
|
|
if [[ $code -eq 200 ]]; then
|
|
unzip public.zip
|
|
fi
|
|
rm -f public.zip
|
|
|
|
# Change back to previous working directory.
|
|
popd
|
|
|
|
# Fetch objdir name.
|
|
objdir=$(cat dist/latest)
|
|
|
|
# Get libFuzzer options.
|
|
readarray -t options < <(python nss/fuzz/config/libfuzzer_options.py nss/fuzz/options/"$corpus".options)
|
|
|
|
# Run nssfuzz.
|
|
dist/"$objdir"/bin/nssfuzz-"$target" "nss/fuzz/corpus/$corpus" "${options[@]}" "$@"
|