From 5c06d5a1e40752a45d3e9fb207b2c4dffdeb1677 Mon Sep 17 00:00:00 2001 From: Jorropo Date: Wed, 8 Jun 2022 10:11:55 +0200 Subject: [PATCH] fuzz: add Decoder fuzzing This uses the spec tests as seeding value. --- spec_test.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/spec_test.go b/spec_test.go index 640e6f9..c8fff4f 100644 --- a/spec_test.go +++ b/spec_test.go @@ -145,3 +145,36 @@ func TestSpecVectors(t *testing.T) { }) } } + +func FuzzDecode(f *testing.F) { + files, err := filepath.Glob("spec/tests/*.csv") + if err != nil { + f.Fatal(err) + } + for _, fname := range files { + func() { + file, err := os.Open(fname) + if err != nil { + f.Fatal(err) + } + defer file.Close() + reader := csv.NewReader(file) + reader.LazyQuotes = false + reader.FieldsPerRecord = 2 + reader.TrimLeadingSpace = true + + values, err := reader.ReadAll() + if err != nil { + f.Fatal(err) + } + + for _, tc := range values[1:] { + f.Add(tc[1]) + } + }() + } + + f.Fuzz(func(_ *testing.T, data string) { + Decode(data) + }) +}