You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
#!/usr/bin/env bash
|
|
# Runs every parser fuzz target for the given duration each (default 20s).
|
|
# FUZZ_PARALLEL limits the number of fuzzing workers; each one keeps a
|
|
# 100 MB shared-memory file in the temporary directory.
|
|
# FUZZ_MINIMIZE is the time spent minimising each new input (default 0):
|
|
# minimisation stalls FuzzInspect for minutes, so short runs skip it; a
|
|
# failing input is still saved under testdata/fuzz as found.
|
|
set -euo pipefail
|
|
duration="${1:-20s}"
|
|
parallel=(-fuzzminimizetime="${FUZZ_MINIMIZE:-0}")
|
|
if [[ -n "${FUZZ_PARALLEL:-}" ]]; then
|
|
parallel+=(-parallel "$FUZZ_PARALLEL")
|
|
fi
|
|
targets=(
|
|
"./codec FuzzDecoder"
|
|
"./codec FuzzWalk"
|
|
"./codec FuzzPeek"
|
|
"./codec FuzzUnmarshal"
|
|
"./codec FuzzEncodeImpliesWalk"
|
|
"./extension FuzzDecodeArray"
|
|
"./profile FuzzDecode"
|
|
"./datekey FuzzParse"
|
|
"./agewrap FuzzStanzas"
|
|
"./accesskey FuzzDecode"
|
|
"./capsule FuzzParsePrelude"
|
|
"./capsule FuzzDecodeHeader"
|
|
"./capsule FuzzDecodeControl"
|
|
"./capsule FuzzDecodeHead"
|
|
"./capsule FuzzEvaluateSecurity"
|
|
"./internal/pathrule FuzzCheckPath"
|
|
"./locator FuzzUnmarshal"
|
|
"./locator FuzzParseInfo"
|
|
"./locator FuzzCheckURI"
|
|
"./locator FuzzCheckResolvedIP"
|
|
"./internal/der FuzzDERCheck"
|
|
"./internal/cms FuzzParseSignature"
|
|
"./internal/cms FuzzParseToken"
|
|
"./internal/cms FuzzParseCert"
|
|
"./capsule FuzzInspect"
|
|
"./capsule FuzzEncodeImpliesDecode"
|
|
)
|
|
for t in "${targets[@]}"; do
|
|
read -r pkg name <<<"$t"
|
|
echo "== $pkg $name ($duration)"
|
|
go test -run='^$' -fuzz="^${name}\$" -fuzztime="$duration" "${parallel[@]}" "$pkg"
|
|
done
|