diff --git a/configuration/fuzz.go b/configuration/fuzz.go new file mode 100644 index 00000000..103bacdd --- /dev/null +++ b/configuration/fuzz.go @@ -0,0 +1,16 @@ +// +build gofuzz + +package configuration + +import ( + "bytes" +) + +// ParserFuzzer implements a fuzzer that targets Parser() +// Export before building +// nolint:deadcode +func parserFuzzer(data []byte) int { + rd := bytes.NewReader(data) + _, _ = Parse(rd) + return 1 +} diff --git a/reference/fuzz.go b/reference/fuzz.go new file mode 100644 index 00000000..01a0dca9 --- /dev/null +++ b/reference/fuzz.go @@ -0,0 +1,12 @@ +// +build gofuzz + +package reference + +// fuzzParseNormalizedNamed implements a fuzzer +// that targets ParseNormalizedNamed +// Export before building the fuzzer. +// nolint:deadcode +func fuzzParseNormalizedNamed(data []byte) int { + _, _ = ParseNormalizedNamed(string(data)) + return 1 +} diff --git a/registry/api/v2/fuzz.go b/registry/api/v2/fuzz.go new file mode 100644 index 00000000..24feeaac --- /dev/null +++ b/registry/api/v2/fuzz.go @@ -0,0 +1,12 @@ +// +build gofuzz + +package v2 + +// FuzzParseForwardedHeader implements a fuzzer +// that targets parseForwardedHeader +// Export before building +// nolint:deadcode +func fuzzParseForwardedHeader(data []byte) int { + _, _, _ = parseForwardedHeader(string(data)) + return 1 +} diff --git a/script/oss_fuzz_build.sh b/script/oss_fuzz_build.sh new file mode 100755 index 00000000..e89fa8a9 --- /dev/null +++ b/script/oss_fuzz_build.sh @@ -0,0 +1,9 @@ +#!/bin/bash -eu + +sed 's/parserFuzzer/ParserFuzzer/g' -i ./configuration/fuzz.go +sed 's/fuzzParseNormalizedNamed/FuzzParseNormalizedNamed/g' -i ./reference/fuzz.go +sed 's/fuzzParseForwardedHeader/FuzzParseForwardedHeader/g' -i ./registry/api/v2/fuzz.go + +compile_go_fuzzer github.com/distribution/distribution/v3/configuration ParserFuzzer parser_fuzzer +compile_go_fuzzer github.com/distribution/distribution/v3/reference FuzzParseNormalizedNamed fuzz_parsed_normalized_named +compile_go_fuzzer github.com/distribution/distribution/v3/registry/api/v2 FuzzParseForwardedHeader fuzz_parse_forwarded_header