diff --git a/pkg/chain/marshal_binary_test.go b/pkg/chain/marshal_binary_test.go index bc6045f..57176de 100644 --- a/pkg/chain/marshal_binary_test.go +++ b/pkg/chain/marshal_binary_test.go @@ -28,31 +28,6 @@ func TestInvalidChainData(t *testing.T) { require.Error(t, ch.UnmarshalBinary([]byte("\x00\x00:aws:iam::namespace:group/so\x82\x82\x82\x82\x82\x82u\x82"))) } -func FuzzUnmarshal(f *testing.F) { - for _, id := range generateTestIDs() { - for _, rules := range generateTestRules() { - for _, matchType := range generateTestMatchTypes() { - - chain := Chain{ - ID: id, - Rules: rules, - MatchType: matchType, - } - data, err := chain.MarshalBinary() - require.NoError(f, err) - f.Add(data) - } - } - } - - f.Fuzz(func(t *testing.T, data []byte) { - var ch Chain - require.NotPanics(t, func() { - _ = ch.UnmarshalBinary(data) - }) - }) -} - func performMarshalTest(t *testing.T, id ID, r []Rule, mt MatchType) { chain := Chain{ ID: id, diff --git a/pkg/chain/marshal_fuzz.go b/pkg/chain/marshal_fuzz.go new file mode 100644 index 0000000..b5cbec9 --- /dev/null +++ b/pkg/chain/marshal_fuzz.go @@ -0,0 +1,13 @@ +//go:build gofuzz +// +build gofuzz + +package chain + +func DoFuzzChainUnmarshalBinary(data []byte) int { + var ch Chain + err := ch.UnmarshalBinary(data) + if err != nil { + return 0 + } + return 1 +} diff --git a/pkg/chain/marshal_fuzz_test.go b/pkg/chain/marshal_fuzz_test.go new file mode 100644 index 0000000..f6956c5 --- /dev/null +++ b/pkg/chain/marshal_fuzz_test.go @@ -0,0 +1,34 @@ +//go:build gofuzz +// +build gofuzz + +package chain + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func FuzzUnmarshal(f *testing.F) { + for _, id := range generateTestIDs() { + for _, rules := range generateTestRules() { + for _, matchType := range generateTestMatchTypes() { + + chain := Chain{ + ID: id, + Rules: rules, + MatchType: matchType, + } + data, err := chain.MarshalBinary() + require.NoError(f, err) + f.Add(data) + } + } + } + + f.Fuzz(func(t *testing.T, data []byte) { + require.NotPanics(t, func() { + DoFuzzChainUnmarshalBinary(data) + }) + }) +}