@@ -3,6 +3,7 @@ package wav
33import (
44 "bytes"
55 "io"
6+ "strings"
67 "testing"
78
89 "github.com/stretchr/testify/assert"
@@ -194,3 +195,49 @@ func TestReadSample(t *testing.T) {
194195 assert .Nil (t , err )
195196 assert .Equal (t , 257 , sample )
196197}
198+
199+ // panic: runtime error: invalid memory address or nil pointer dereference
200+ // [signal 0xb code=0x1 addr=0x4 pc=0x4399fb]
201+ //
202+ // goroutine 1 [running]:
203+ // github.com/cryptix/wav.(*Reader).parseHeaders(0xc208033720, 0x0, 0x0)
204+ // /tmp/go-fuzz-build857960013/src/github.com/cryptix/wav/reader.go:191 +0xe3b
205+ // github.com/cryptix/wav.NewReader(0x7f23a9550bd8, 0xc208037c80, 0x2d, 0xc208033720, 0x0, 0x0)
206+ // /tmp/go-fuzz-build857960013/src/github.com/cryptix/wav/reader.go:64 +0x177
207+ // github.com/cryptix/wav.Fuzz(0x7f23a92cf000, 0x2d, 0x100000, 0x2)
208+ // /tmp/go-fuzz-build857960013/src/github.com/cryptix/wav/fuzz.go:12 +0x167
209+ // github.com/dvyukov/go-fuzz/go-fuzz-dep.Main(0x570c60, 0x5d4200, 0x5f6, 0x5f6)
210+ // /home/cryptix/go/src/github.com/dvyukov/go-fuzz/go-fuzz-dep/main.go:64 +0x309
211+ // main.main()
212+ // /tmp/go-fuzz-build857960013/src/go-fuzz-main/main.go:10 +0x4e
213+ // exit status 2
214+ func TestReadFuzzed_panic1 (t * testing.T ) {
215+ t .Parallel ()
216+ wavFile := strings .NewReader ("RIFF%\x00 \x00 \x00 WAVE0000\x10 \x00 \x00 \x00 0000000000000000data00000" )
217+ _ , err := NewReader (wavFile , int64 (wavFile .Len ()))
218+ assert .NotNil (t , err )
219+ assert .Equal (t , ErrBrokenChunkFmt , err )
220+ }
221+
222+ // panic: runtime error: integer divide by zero
223+ // [signal 0x8 code=0x1 addr=0x439ae9 pc=0x439ae9]
224+ //
225+ // goroutine 1 [running]:
226+ // github.com/cryptix/wav.(*Reader).parseHeaders(0xc208032cd0, 0x0, 0x0)
227+ // /tmp/go-fuzz-build857960013/src/github.com/cryptix/wav/reader.go:200 +0xf29
228+ // github.com/cryptix/wav.NewReader(0x7fbca32b6bd8, 0xc208037ef0, 0x2d, 0xc208032cd0, 0x0, 0x0)
229+ // /tmp/go-fuzz-build857960013/src/github.com/cryptix/wav/reader.go:64 +0x177
230+ // github.com/cryptix/wav.Fuzz(0x7fbca3035000, 0x2d, 0x100000, 0x2)
231+ // /tmp/go-fuzz-build857960013/src/github.com/cryptix/wav/fuzz.go:12 +0x167
232+ // github.com/dvyukov/go-fuzz/go-fuzz-dep.Main(0x570c60, 0x5d4200, 0x5f6, 0x5f6)
233+ // /home/cryptix/go/src/github.com/dvyukov/go-fuzz/go-fuzz-dep/main.go:64 +0x309
234+ // main.main()
235+ // /tmp/go-fuzz-build857960013/src/go-fuzz-main/main.go:10 +0x4e
236+ // exit status 2
237+ func TestReadFuzzed_panic2 (t * testing.T ) {
238+ t .Parallel ()
239+ wavFile := strings .NewReader ("RIFF%\x00 \x00 \x00 WAVEfmt \x10 \x00 \x00 \x00 \x01 \x00 000000000000\a \x00 data00000" )
240+ _ , err := NewReader (wavFile , int64 (wavFile .Len ()))
241+ assert .NotNil (t , err )
242+ assert .Equal (t , ErrBrokenChunkFmt , err )
243+ }
0 commit comments