forked from tsenart/vegeta
-
Notifications
You must be signed in to change notification settings - Fork 0
/
fuzzit.sh
executable file
·40 lines (36 loc) · 956 Bytes
/
fuzzit.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
set -xe
# Validate arguments
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <fuzz-type>"
exit 1
fi
# Configure
NAME=vegeta
ROOT=./lib
TYPE=$1
# Setup
export GO111MODULE="off"
go get -u github.com/dvyukov/go-fuzz/go-fuzz github.com/dvyukov/go-fuzz/go-fuzz-build
go get -d -v -u ./...
if [ ! -f fuzzit ]; then
wget -q -O fuzzit https://github.com/fuzzitdev/fuzzit/releases/download/v2.4.29/fuzzit_Linux_x86_64
chmod a+x fuzzit
fi
# Fuzz
function fuzz {
FUNC=Fuzz$1
TARGET=$2
DIR=${3:-$ROOT}
go-fuzz-build -libfuzzer -func $FUNC -o fuzzer.a $DIR
clang -fsanitize=fuzzer fuzzer.a -o fuzzer
./fuzzit create job --type $TYPE $NAME/$TARGET fuzzer
}
fuzz HTTPTargeter http-targeter
fuzz JSONTargeter json-targeter
fuzz ResultsFormatDetection results-format-detection
fuzz GobDecoder gob-decoder
fuzz CSVDecoder csv-decoder
fuzz JSONDecoder json-decoder
fuzz AttackerTCP attacker-tcp
fuzz AttackerHTTP attacker-http