From c9d7b05308593c788a92a0133fb36ce6aaab8e55 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 8 Jan 2023 12:01:04 +0100 Subject: [PATCH] jpeg: add fuzz tests --- pkg/codecs/jpeg/define_quantization_table.go | 4 ---- pkg/codecs/jpeg/define_quantization_table_test.go | 7 +++++++ pkg/codecs/jpeg/define_restart_interval_test.go | 7 +++++++ pkg/codecs/jpeg/start_of_frame1_test.go | 7 +++++++ pkg/codecs/jpeg/start_of_scan_test.go | 7 +++++++ ...ad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 | 2 ++ ...48e6ffd89dfa34cfaac68bab4e2c2a4c5a0ab953e27ba6b006ffd56 | 2 ++ ...7b19c76c1fc4dbf537d4d81f389524539f402d13aa01f93a65ac7e9 | 2 ++ ...60a25181d94bba1342df84c161a53135a7a8e93511489e6b51c0afe | 2 ++ ...28f6e0e4007bae9ef0f4984e89ae5c891d08a2ad3c917fe77b94408 | 2 ++ ...ad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 | 2 ++ ...5a837c70603d7f0bb7ec05fb087fd4db33e0ee855d9b225ca8f2511 | 2 ++ ...de4e8166797e57c7ea359c531218826a6db07cf1a68e91f15b540c8 | 2 ++ ...a2df5f3a4eedd5bad24c2bc0283177676e17ac5abeb131a80a38ef5 | 2 ++ ...ad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 | 2 ++ 15 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/97dc7172b48e6ffd89dfa34cfaac68bab4e2c2a4c5a0ab953e27ba6b006ffd56 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzDefineRestartIntervalUnmarshal/caf81e9797b19c76c1fc4dbf537d4d81f389524539f402d13aa01f93a65ac7e9 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/04069695460a25181d94bba1342df84c161a53135a7a8e93511489e6b51c0afe create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/52bcb082e28f6e0e4007bae9ef0f4984e89ae5c891d08a2ad3c917fe77b94408 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/93e3bc3735a837c70603d7f0bb7ec05fb087fd4db33e0ee855d9b225ca8f2511 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/9aaf79656de4e8166797e57c7ea359c531218826a6db07cf1a68e91f15b540c8 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/f032221efa2df5f3a4eedd5bad24c2bc0283177676e17ac5abeb131a80a38ef5 create mode 100644 pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfScanUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 diff --git a/pkg/codecs/jpeg/define_quantization_table.go b/pkg/codecs/jpeg/define_quantization_table.go index 18d975fa..b141fc69 100644 --- a/pkg/codecs/jpeg/define_quantization_table.go +++ b/pkg/codecs/jpeg/define_quantization_table.go @@ -19,10 +19,6 @@ type DefineQuantizationTable struct { // Unmarshal decodes the marker. func (m *DefineQuantizationTable) Unmarshal(buf []byte) error { for len(buf) != 0 { - if len(buf) < 1 { - return fmt.Errorf("image is too short") - } - id := buf[0] & 0x0F precision := buf[0] >> 4 buf = buf[1:] diff --git a/pkg/codecs/jpeg/define_quantization_table_test.go b/pkg/codecs/jpeg/define_quantization_table_test.go index 2890bc93..a9e5e1da 100644 --- a/pkg/codecs/jpeg/define_quantization_table_test.go +++ b/pkg/codecs/jpeg/define_quantization_table_test.go @@ -67,3 +67,10 @@ func TestDefineQuantizationTableMarshal(t *testing.T) { }) } } + +func FuzzDefineQuantizationTableUnmarshal(f *testing.F) { + f.Fuzz(func(t *testing.T, b []byte) { + var h DefineQuantizationTable + h.Unmarshal(b) + }) +} diff --git a/pkg/codecs/jpeg/define_restart_interval_test.go b/pkg/codecs/jpeg/define_restart_interval_test.go index 8c64875d..abc14c09 100644 --- a/pkg/codecs/jpeg/define_restart_interval_test.go +++ b/pkg/codecs/jpeg/define_restart_interval_test.go @@ -32,3 +32,10 @@ func TestDefineRestartIntervalUnmarshal(t *testing.T) { }) } } + +func FuzzDefineRestartIntervalUnmarshal(f *testing.F) { + f.Fuzz(func(t *testing.T, b []byte) { + var h DefineRestartInterval + h.Unmarshal(b) + }) +} diff --git a/pkg/codecs/jpeg/start_of_frame1_test.go b/pkg/codecs/jpeg/start_of_frame1_test.go index d8697830..fbdca8db 100644 --- a/pkg/codecs/jpeg/start_of_frame1_test.go +++ b/pkg/codecs/jpeg/start_of_frame1_test.go @@ -47,3 +47,10 @@ func TestStartOfFrame1Marshal(t *testing.T) { }) } } + +func FuzzStartOfFrame1Unmarshal(f *testing.F) { + f.Fuzz(func(t *testing.T, b []byte) { + var h StartOfFrame1 + h.Unmarshal(b) + }) +} diff --git a/pkg/codecs/jpeg/start_of_scan_test.go b/pkg/codecs/jpeg/start_of_scan_test.go index c664a27e..52bf16e0 100644 --- a/pkg/codecs/jpeg/start_of_scan_test.go +++ b/pkg/codecs/jpeg/start_of_scan_test.go @@ -40,3 +40,10 @@ func TestStartOfScanMarshal(t *testing.T) { }) } } + +func FuzzStartOfScanUnmarshal(f *testing.F) { + f.Fuzz(func(t *testing.T, b []byte) { + var h StartOfScan + h.Unmarshal(b) + }) +} diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 b/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 new file mode 100644 index 00000000..a96f5599 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("0") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/97dc7172b48e6ffd89dfa34cfaac68bab4e2c2a4c5a0ab953e27ba6b006ffd56 b/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/97dc7172b48e6ffd89dfa34cfaac68bab4e2c2a4c5a0ab953e27ba6b006ffd56 new file mode 100644 index 00000000..4fbe4165 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineQuantizationTableUnmarshal/97dc7172b48e6ffd89dfa34cfaac68bab4e2c2a4c5a0ab953e27ba6b006ffd56 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("\x01") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineRestartIntervalUnmarshal/caf81e9797b19c76c1fc4dbf537d4d81f389524539f402d13aa01f93a65ac7e9 b/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineRestartIntervalUnmarshal/caf81e9797b19c76c1fc4dbf537d4d81f389524539f402d13aa01f93a65ac7e9 new file mode 100644 index 00000000..67322c70 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzDefineRestartIntervalUnmarshal/caf81e9797b19c76c1fc4dbf537d4d81f389524539f402d13aa01f93a65ac7e9 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/04069695460a25181d94bba1342df84c161a53135a7a8e93511489e6b51c0afe b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/04069695460a25181d94bba1342df84c161a53135a7a8e93511489e6b51c0afe new file mode 100644 index 00000000..98474d5b --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/04069695460a25181d94bba1342df84c161a53135a7a8e93511489e6b51c0afe @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("\b0000\x030!00\x110000") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/52bcb082e28f6e0e4007bae9ef0f4984e89ae5c891d08a2ad3c917fe77b94408 b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/52bcb082e28f6e0e4007bae9ef0f4984e89ae5c891d08a2ad3c917fe77b94408 new file mode 100644 index 00000000..c0bab187 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/52bcb082e28f6e0e4007bae9ef0f4984e89ae5c891d08a2ad3c917fe77b94408 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("\b0000\x030!0000000") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 new file mode 100644 index 00000000..a96f5599 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("0") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/93e3bc3735a837c70603d7f0bb7ec05fb087fd4db33e0ee855d9b225ca8f2511 b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/93e3bc3735a837c70603d7f0bb7ec05fb087fd4db33e0ee855d9b225ca8f2511 new file mode 100644 index 00000000..896722f3 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/93e3bc3735a837c70603d7f0bb7ec05fb087fd4db33e0ee855d9b225ca8f2511 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("000000000000000") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/9aaf79656de4e8166797e57c7ea359c531218826a6db07cf1a68e91f15b540c8 b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/9aaf79656de4e8166797e57c7ea359c531218826a6db07cf1a68e91f15b540c8 new file mode 100644 index 00000000..83a124d2 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/9aaf79656de4e8166797e57c7ea359c531218826a6db07cf1a68e91f15b540c8 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("\b0000\x03000000000") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/f032221efa2df5f3a4eedd5bad24c2bc0283177676e17ac5abeb131a80a38ef5 b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/f032221efa2df5f3a4eedd5bad24c2bc0283177676e17ac5abeb131a80a38ef5 new file mode 100644 index 00000000..9bda36b8 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfFrame1Unmarshal/f032221efa2df5f3a4eedd5bad24c2bc0283177676e17ac5abeb131a80a38ef5 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("\b00000000000000") diff --git a/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfScanUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfScanUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 new file mode 100644 index 00000000..a96f5599 --- /dev/null +++ b/pkg/codecs/jpeg/testdata/fuzz/FuzzStartOfScanUnmarshal/582528ddfad69eb57775199a43e0f9fd5c94bba343ce7bb6724d4ebafe311ed4 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("0")