From 9c8f2ccaeee46a3ccca03b3fd5ce1c53b04efc72 Mon Sep 17 00:00:00 2001 From: Gabriel Vasile Date: Sun, 12 Dec 2021 11:38:39 +0200 Subject: [PATCH] Add fuzzing for charset detector functions --- internal/charset/charset_test.go | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/internal/charset/charset_test.go b/internal/charset/charset_test.go index d9b8603..a6e0587 100644 --- a/internal/charset/charset_test.go +++ b/internal/charset/charset_test.go @@ -55,3 +55,58 @@ func TestFromPlain(t *testing.T) { } } } + +func FuzzFromPlain(f *testing.F) { + samples := [][]byte{ + []byte{0xe6, 0xf8, 0xe5, 0x85, 0x85}, + []byte{0xe6, 0xf8, 0xe5}, + []byte("æøå"), + } + + for _, s := range samples { + f.Add(s) + } + + f.Fuzz(func(t *testing.T, d []byte) { + if charset := FromPlain(d); charset == "" { + t.Skip() + } + }) +} +func FuzzFromHTML(f *testing.F) { + samples := []string{ + ``, + ``, + ``, + ``, + ``, + ``, + ``, + ``, + } + + for _, s := range samples { + f.Add([]byte(s)) + } + + f.Fuzz(func(t *testing.T, d []byte) { + if charset := FromHTML(d); charset == "" { + t.Skip() + } + }) +} +func FuzzFromXML(f *testing.F) { + samples := []string{ + ``, + } + + for _, s := range samples { + f.Add([]byte(s)) + } + + f.Fuzz(func(t *testing.T, d []byte) { + if charset := FromXML(d); charset == "" { + t.Skip() + } + }) +}