From e7c593edd0b7b65275a76401059b0c62568e0fe7 Mon Sep 17 00:00:00 2001 From: AdamKorcz Date: Thu, 15 Sep 2022 22:39:35 +0100 Subject: [PATCH] Fuzzing: Instrument with new sanitizers Signed-off-by: AdamKorcz --- contrib/fuzz/archive_fuzzer.go | 2 +- contrib/fuzz/fuzz_FuzzImportIndex.dict | 2 ++ contrib/fuzz/fuzz_FuzzImportIndex.options | 3 +++ contrib/fuzz/oss_fuzz_build.sh | 7 +++++++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 contrib/fuzz/fuzz_FuzzImportIndex.dict create mode 100644 contrib/fuzz/fuzz_FuzzImportIndex.options diff --git a/contrib/fuzz/archive_fuzzer.go b/contrib/fuzz/archive_fuzzer.go index 941467b7e..534cbd687 100644 --- a/contrib/fuzz/archive_fuzzer.go +++ b/contrib/fuzz/archive_fuzzer.go @@ -67,7 +67,7 @@ func FuzzApply(data []byte) int { // that targets archive.ImportIndex() func FuzzImportIndex(data []byte) int { f := fuzz.NewConsumer(data) - tarBytes, err := f.TarBytes() + tarBytes, err := f.GetBytes() if err != nil { return 0 } diff --git a/contrib/fuzz/fuzz_FuzzImportIndex.dict b/contrib/fuzz/fuzz_FuzzImportIndex.dict new file mode 100644 index 000000000..fe68e7805 --- /dev/null +++ b/contrib/fuzz/fuzz_FuzzImportIndex.dict @@ -0,0 +1,2 @@ +"oci-layout" +"manifest.json" diff --git a/contrib/fuzz/fuzz_FuzzImportIndex.options b/contrib/fuzz/fuzz_FuzzImportIndex.options new file mode 100644 index 000000000..6ccf0d403 --- /dev/null +++ b/contrib/fuzz/fuzz_FuzzImportIndex.options @@ -0,0 +1,3 @@ +[libfuzzer] +max_len = 1500000 +len_control = 0 diff --git a/contrib/fuzz/oss_fuzz_build.sh b/contrib/fuzz/oss_fuzz_build.sh index 74fe2bcf8..84fdf0263 100755 --- a/contrib/fuzz/oss_fuzz_build.sh +++ b/contrib/fuzz/oss_fuzz_build.sh @@ -38,6 +38,10 @@ compile_fuzzers() { done } +# This is from https://github.com/AdamKorcz/instrumentation +cd $SRC/instrumentation +go run main.go $SRC/containerd/images + apt-get update && apt-get install -y wget cd $SRC wget --quiet https://go.dev/dl/go1.19.1.linux-amd64.tar.gz @@ -89,3 +93,6 @@ sed -i 's/\/run\/containerd-test/\/tmp\/containerd-test/g' $SRC/containerd/integ cd integration/client compile_fuzzers '^func FuzzInteg.*data' compile_go_fuzzer vendor + +cp $SRC/containerd/contrib/fuzz/*.options $OUT/ +cp $SRC/containerd/contrib/fuzz/*.dict $OUT/