@@ -19,23 +19,61 @@ set -euxo pipefail
19
19
GOPATH=" ${GOPATH:-/ root/ go} "
20
20
GO_SRC=" ${GOPATH} /src"
21
21
PROJECT_PATH=" github.com/fluxcd/helm-controller"
22
+ TMP_DIR=$( mktemp -d /tmp/oss_fuzz-XXXXXX)
23
+
24
+ cleanup (){
25
+ rm -rf " ${TMP_DIR} "
26
+ }
27
+ trap cleanup EXIT
28
+
29
+ install_deps (){
30
+ if ! command -v go-118-fuzz-build & > /dev/null || ! command -v addimport & > /dev/null; then
31
+ mkdir -p " ${TMP_DIR} /go-118-fuzz-build"
32
+
33
+ git clone https://github.com/AdamKorcz/go-118-fuzz-build " ${TMP_DIR} /go-118-fuzz-build"
34
+ cd " ${TMP_DIR} /go-118-fuzz-build"
35
+ go build -o " ${GOPATH} /bin/go-118-fuzz-build"
36
+
37
+ cd addimport
38
+ go build -o " ${GOPATH} /bin/addimport"
39
+ fi
40
+
41
+ if ! command -v goimports & > /dev/null; then
42
+ go install golang.org/x/tools/cmd/goimports@latest
43
+ fi
44
+ }
45
+
46
+ # Removes the content of test funcs which could cause the Fuzz
47
+ # tests to break.
48
+ remove_test_funcs (){
49
+ filename=$1
50
+
51
+ echo " removing co-located *testing.T"
52
+ sed -i -e ' /func Test.*testing.T) {$/ {:r;/\n}/!{N;br}; s/\n.*\n/\n/}' " ${filename} "
53
+
54
+ # After removing the body of the go testing funcs, consolidate the imports.
55
+ goimports -w " ${filename} "
56
+ }
57
+
58
+ install_deps
22
59
23
60
cd " ${GO_SRC} /${PROJECT_PATH} "
24
61
25
- go install github.com/AdamKorcz/go-118-fuzz-build@latest
26
62
go get github.com/AdamKorcz/go-118-fuzz-build/utils
27
63
28
64
# Iterate through all Go Fuzz targets, compiling each into a fuzzer.
29
65
test_files=$( grep -r --include=' **_test.go' --files-with-matches ' func Fuzz' .)
30
66
for file in ${test_files}
31
67
do
68
+ remove_test_funcs " ${file} "
69
+
32
70
targets=$( grep -oP ' func \K(Fuzz\w*)' " ${file} " )
33
71
for target_name in ${targets}
34
72
do
35
- fuzzer_name=$( echo " ${target_name} " | tr ' [:upper:]' ' [:lower:]' )
36
- target_dir=$( dirname " ${file} " )
73
+ fuzzer_name=$( echo " ${target_name} " | tr ' [:upper:]' ' [:lower:]' )
74
+ target_dir=$( dirname " ${file} " )
37
75
38
76
echo " Building ${file} .${target_name} into ${fuzzer_name} "
39
- compile_native_go_fuzzer " ${target_dir} " " ${target_name} " " ${fuzzer_name} " fuzz
77
+ compile_native_go_fuzzer " ${target_dir} " " ${target_name} " " ${fuzzer_name} "
40
78
done
41
79
done
0 commit comments