31 lines
1.0 KiB
Bash
Executable File
31 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -xe
|
|
|
|
# Go-fuzz doesn't support modules yet, so ensure we do everything in the old style GOPATH way
|
|
export GO111MODULE="off"
|
|
|
|
# Install go-fuzz
|
|
go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build
|
|
|
|
# Target names on fuzzit.dev
|
|
TARGETS=("promql-parse-metric" "promql-parse-open-metric" "promql-parse-metric-selector" "promql-parse-expr")
|
|
|
|
# Prometheus fuzz functions
|
|
FUZZ_FUNCTIONS=("FuzzParseMetric" "FuzzParseOpenMetric" "FuzzParseMetricSelector" "FuzzParseExpr")
|
|
|
|
# Compiling prometheus fuzz targets in fuzz.go with go-fuzz (https://github.com/dvyukov/go-fuzz) and libFuzzer support
|
|
for ((i=0;i<${#TARGETS[@]};++i));
|
|
do
|
|
go-fuzz-build -libfuzzer -func ${FUZZ_FUNCTIONS[i]} -o ${TARGETS[i]}.a ./promql
|
|
clang-9 -fsanitize=fuzzer ${TARGETS[i]}.a -o ${TARGETS[i]}
|
|
done
|
|
|
|
# Install fuzzit CLI
|
|
wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.29/fuzzit_Linux_x86_64
|
|
chmod a+x fuzzit
|
|
|
|
for TARGET in "${TARGETS[@]}"
|
|
do
|
|
./fuzzit create job --type $1 prometheus/${TARGET} ${TARGET}
|
|
done
|