diff --git a/contrib/fuzz/containerd_import_fuzzer.go b/contrib/fuzz/containerd_import_fuzz_test.go similarity index 62% rename from contrib/fuzz/containerd_import_fuzzer.go rename to contrib/fuzz/containerd_import_fuzz_test.go index 33edbefbb0..abdd1496c9 100644 --- a/contrib/fuzz/containerd_import_fuzzer.go +++ b/contrib/fuzz/containerd_import_fuzz_test.go @@ -1,5 +1,3 @@ -//go:build gofuzz - /* Copyright The containerd Authors. Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,6 +16,8 @@ package fuzz import ( "bytes" "context" + "os" + "testing" fuzz "github.com/AdaLogics/go-fuzz-headers" @@ -31,30 +31,35 @@ func fuzzContext() (context.Context, context.CancelFunc) { return ctx, cancel } -func FuzzContainerdImport(data []byte) int { - initDaemon.Do(startDaemon) - - client, err := containerd.New(defaultAddress) - if err != nil { - return 0 +func FuzzContainerdImport(f *testing.F) { + if os.Getuid() != 0 { + f.Skip("skipping fuzz test that requires root") } - defer client.Close() - f := fuzz.NewConsumer(data) + f.Fuzz(func(t *testing.T, data []byte) { + initDaemon.Do(startDaemon) - noOfImports, err := f.GetInt() - if err != nil { - return 0 - } - maxImports := 20 - ctx, cancel := fuzzContext() - defer cancel() - for i := 0; i < noOfImports%maxImports; i++ { - tarBytes, err := f.GetBytes() + client, err := containerd.New(defaultAddress) if err != nil { - return 0 + return } - _, _ = client.Import(ctx, bytes.NewReader(tarBytes)) - } - return 1 + defer client.Close() + + f := fuzz.NewConsumer(data) + + noOfImports, err := f.GetInt() + if err != nil { + return + } + maxImports := 20 + ctx, cancel := fuzzContext() + defer cancel() + for i := 0; i < noOfImports%maxImports; i++ { + tarBytes, err := f.GetBytes() + if err != nil { + return + } + _, _ = client.Import(ctx, bytes.NewReader(tarBytes)) + } + }) } diff --git a/contrib/fuzz/daemon.go b/contrib/fuzz/daemon.go index 96f7e74ca0..59e0ee0360 100644 --- a/contrib/fuzz/daemon.go +++ b/contrib/fuzz/daemon.go @@ -1,5 +1,3 @@ -//go:build gofuzz - /* Copyright The containerd Authors.