Skip to content

Commit 3fffa40

Browse files
committed
improve fuzz tests
1 parent 8511935 commit 3fffa40

File tree

152 files changed

+1194
-674
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+1194
-674
lines changed

pkg/format/rtpac3/decoder_test.go

Lines changed: 82 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package rtpac3
22

33
import (
4+
"encoding/binary"
45
"errors"
56
"testing"
67

@@ -73,34 +74,91 @@ func TestDecodeErrorMissingPacket(t *testing.T) {
7374
require.EqualError(t, err, "discarding frame since a RTP packet is missing")
7475
}
7576

77+
func serializePackets(packets []*rtp.Packet) ([]byte, error) {
78+
var buf []byte
79+
80+
for _, pkt := range packets {
81+
buf2, err := pkt.Marshal()
82+
if err != nil {
83+
return nil, err
84+
}
85+
86+
tmp := make([]byte, 4)
87+
binary.LittleEndian.PutUint32(tmp, uint32(len(buf2)))
88+
buf = append(buf, tmp...)
89+
buf = append(buf, buf2...)
90+
}
91+
92+
return buf, nil
93+
}
94+
95+
func unserializePackets(data []byte) ([]*rtp.Packet, error) {
96+
var packets []*rtp.Packet
97+
buf := data
98+
99+
for {
100+
if len(buf) < 4 {
101+
return nil, errors.New("not enough bits")
102+
}
103+
104+
size := binary.LittleEndian.Uint32(buf[:4])
105+
buf = buf[4:]
106+
107+
if uint32(len(buf)) < size {
108+
return nil, errors.New("not enough bits")
109+
}
110+
111+
var pkt rtp.Packet
112+
err := pkt.Unmarshal(buf[:size])
113+
if err != nil {
114+
return nil, err
115+
}
116+
117+
packets = append(packets, &pkt)
118+
buf = buf[size:]
119+
120+
if len(buf) == 0 {
121+
break
122+
}
123+
}
124+
125+
return packets, nil
126+
}
127+
76128
func FuzzDecoder(f *testing.F) {
77-
f.Fuzz(func(t *testing.T, a []byte, am bool, b []byte, bm bool) {
129+
for _, ca := range cases {
130+
buf, err := serializePackets(ca.pkts)
131+
if err != nil {
132+
panic(err)
133+
}
134+
f.Add(buf)
135+
}
136+
137+
f.Fuzz(func(t *testing.T, buf []byte) {
138+
packets, err := unserializePackets(buf)
139+
if err != nil {
140+
t.Skip()
141+
return
142+
}
143+
78144
d := &Decoder{}
79-
err := d.Init()
145+
err = d.Init()
80146
require.NoError(t, err)
81147

82-
d.Decode(&rtp.Packet{ //nolint:errcheck
83-
Header: rtp.Header{
84-
Version: 2,
85-
Marker: am,
86-
PayloadType: 96,
87-
SequenceNumber: 17645,
88-
Timestamp: 2289527317,
89-
SSRC: 0x9dbb7812,
90-
},
91-
Payload: a,
92-
})
148+
for _, pkt := range packets {
149+
if frames, err := d.Decode(pkt); err == nil {
150+
if len(frames) == 0 {
151+
t.Errorf("should not happen")
152+
}
93153

94-
d.Decode(&rtp.Packet{ //nolint:errcheck
95-
Header: rtp.Header{
96-
Version: 2,
97-
Marker: bm,
98-
PayloadType: 96,
99-
SequenceNumber: 17646,
100-
Timestamp: 2289527317,
101-
SSRC: 0x9dbb7812,
102-
},
103-
Payload: b,
104-
})
154+
for _, frame := range frames {
155+
if len(frame) == 0 {
156+
t.Errorf("should not happen")
157+
}
158+
}
159+
160+
break
161+
}
162+
}
105163
})
106164
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
go test fuzz v1
2+
[]byte("\xba\x04\x00\x00 00000000000\x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b\x02\x00\x00 00000000000\x03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")

pkg/format/rtpac3/testdata/fuzz/FuzzDecoder/09a2b71a4640358c

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
go test fuzz v1
2+
[]byte("\xba\x04\x00\x00\x80`D\xed\x00\x00\x00\x00\x9d\xbbx\x12\x01\x02\vw_k\x83Q\xf2\xc0@>\xff\x99Ř\xb3\x16b\xccY\xff\xfa\u05ee\xf9\az\xb0\xfa\xbb\xea\xef\x9fW|\xf9\xf3\xf7\xc2\x0e\xf5a\xf5w\xd5\xdf>\xae\xf9\xf3\xe7\xef\x84\x1d\xea\xc3\xea\ufafe}]\xf3\xe7\xcf\xdf\b;Շ\xd5\xdfW|\xfa\xbb\xe7ϟ\xbe\x10w\xab\x0f\xab\xbe\xae\xf9\xf5wϟ?|#\xc4\xf9\x7ff\xa5J\x95*T\xa9\x00T7\xb1NsɳiE\x93\xa2\x8c>\xe7\xfa\xd0uD\xa2\xef7\xd0r\xeaB\xfb\xad\xcemreS\xe1\xa8ዉk̴>\xa1Ʀ\x8cW\x8d[\xcaRO~b\x1c\xa9ٵ\x19jװD\x920;\xf7c\xb9,\xb6s\n\rE\xa2\x8a\xbd\xc5\x02\x1bN$\x81\xcb\xcet\x11|.\xb7e$nlFg\x89\x8cr\x87\x9dpʝU\n\xaf\xdd8\x8b^R\x87\xbb\xe9\x10[\xfe\xd0\x04\xc3\xf1\xe8h\xbe\x9c\x85\x91\xf1\xb09\x7f\x99\x82\x9d\xfd\x88\n\x00\x17\x7f\xa6\x05gꠕ}\xae\rG\xcb\x01\x13\xfc\xb4\x15/\xbb\x81Rz\xba\x19\x17\xab\xc1\xd0\xf9\xc0\x1d\xfe!!\xfe\"!\xed\xe3%\xdd\xe4&\xa3*2\xa34\xe0&rX@\x95\r\xecS\x9c\xf2l\xdaQd\xe8\xa3\x0f\xb9\xfe\xb4\x1dQ(\xbb\xcd\xf4\x1c\xba\x90\xbe\xebs\x9b\\\x99T\xf8j8b\xe2Z\xf3-\x0f\xa8q\xa9\xa3\x15\xe3V\xf2\x94\x93ߘ\x87*vmFZ\xb5\xec\x11$\x8c\x0e\xfd\xd8\xeeK-\x9c\u0083Qh\xa2\xafq@\x86Ӊ r\xf3\x9d\x04_\v\xad\xd9I\x1b\x9b\x11\x99\xe2c\x1c\xa1\xe7\\2\xa7UB\xab\xf7N\"ה\xa1\xee\xfaD\x16\xff\xb4\x010\xfcz\x1a/\xa7!d|l\x0e_\xe6`\xa7\x7fb\x02\x80\x05\xdf\xe9\x81Y\xfa\xa8%_k\x83Q\xf2\xc0D\xff-\x05K\xee\xe0T\x9e\xae\x86E\xea\xf0t>p\a\x7f\x88H\x7f\x88\x88{x\xc9wy\tTy\xb1NsɳiE\x93\xa2\x8c>\xe7\xfa\xd0uD\xa2\xef7\xd0r\xeaB\xfb\xad\xcemreS\xe1\xa8ዉk̴>\xa1Ʀ\x8cW\x8d[\xcaRO~b\x1c\xa9ٵ\x19jװD\x920;\xf7c\xb9,\xb6s\n\rE\xa2\x8a\xbd\xc5\x02\x1bN$\x81\xcb\xcet\x11|.\xb7e$nlFg\x89\x8cr\x87\x9dpʝU\n\xaf\xdd8\x8b^R\x87\xbb\xe9\x10[\xfe\xd0\x04\xc3\xf1\xe8h\xbe\x9c\x85\x91\xf1\xb09\x7f\x99\x82\x9d\xfd\x88\n\x00\x17\x7f\xa6\x05gꠕ}\xae\rG\xcb\x01\x13\xfc\xb4\x15/\xbb\x81Rz\xba\x19\x17\xab\xc1\xd0\xf9\xc0\x1d\xfe!!\xfe\"!\xed\xe3%\xdd\xe4%P\xde\xc59\xcf&ͥ\x16N\x8a0\xfb\x9f\xebA\xd5\x12\x8b\xbc\xdfA˩\v\xee\xb79\xb5ɕO\x86\xa3\x86.%\xaf2\xd0\xfa\x87\x1a\x9a1^5o)I=\xf9\x88r\xa7f\xd4e\xab^\xc1\x12H\xc0\xefݎ\xe4\xb2\xd9\xcc(5\x16\x8a*\xf7\x14\bm8\x92\a/9\xd0E\xf0\xbaݔ\x91\xb9\xb1\x19\x9e&1\xca\x1eu\xc3*uT*\xbft\xe2-yJ\x1e\xef\xa4Ao\xfb@\x13\x0fǡ\xa2\xfar\x16G\xc6\xc0\xe5\xfef\nw\xf6 (\x00]\xfe\x98\x15\x9f\xaa\x82U\xf6\xb85\x1f,\x04O\xf2\xd0T\xbe\xee\x05I\xea\xe8d^\xaf\aC\xe7\x00w\xf8\x84\x87\xf8\x88\x87\xb7\x8c\x97w\x90\x95C{\x14\xe7<\x9b6\x94Y:(\xc3\xee\x7f\xad\aTJ.\xf3}\a.\xa4/\xba\xdc\xe6\xd7&U>\x1a\x8e\x18\xb8\x96\xbc\xcbC\xea\x1cjh\xc5xռ\xa5$\xf7\xe6!ʝ\x9bQ\x96\xad{\x04I#\x03\xbfv;\x92\xcbg0\xa0\xd4Z(\xab\xdcP!\xb4\xe2H\x1c\xbc\xe7A\x17\xc2\xebvRF\xe6\xc4fx\x98\xc7(y\xd7\f\xa9\xd5P\xaa\xfdӈ\xb5\xe5({\xbe\x91\x05\xbf\xed\x00L?\x1e\x86\x8b\xe9\xc8Y\x1f\x1b\x03\x97\xf9\x98)\xdf\u0600\xa0\x01w\xfa`V~\xaa\tW\xda\xe0\xd4|\xb0\x11?\xcbAR\xfb\xb8\x15'\xab\xa1\x91z\xbc\x1d\x0f\x9c\x01\xdf\xe2\x12\x1f\xe2\"\x1e\xde2]\xdeBU\x15\x8a\x9c\xf4\x9b3J\f\x9dQ\x80|\x04\xaa\xa9\xf3\xe7ϟ>s)\xf1\xfc\xbb\r\xf3\xe7\xd0\xdf>|\xf9\xf3\xea\xef\x9f>|\xf9\xf3\xe8U\xdf>|\xf9\xf3\xe7ϟ>|\xf9\xf3\xf55\xdf>|\xf9\xf3\xe7ϟ>|\xf9\xf3\xe7ϟ>\x1c\xca|\x7f.\xc3|\xf9\xf47ϟ>|\xfa\xbb\xe7ϟ>|\xfa\x15wϟ>|\xf9\xf3\xe7ϟ>|\xfdMwϟ>|\xf9\xf3\xe7ϟ>|\xf9\xf3\xe7χ2\x9f\x1f˰\xdf>}\r\xf3\xe7ϟ>\xae\xf9\xf3\xe7ϟ>\x85]\xf3\xe7ϟ>|\xf9\xf3\xe7ϟ?S]\xf3\xe7b\x02\x00\x00\x80\xe0D\xee\x00\x00\x00\x00\x9d\xbbx\x12\x03\x02ϟ>|\xf9\xf3\xe7ϟ>|\xf9\xf3\xe1̧\xc7\xf2\xec7ϟC|\xf9\xf3\xe7ϫ\xbe|\xf9\xf3\xe7ϡW|\xf9\xf3\xe7ϟ>|\xf9\xf3\xe7\xcf\xd4\xd7|\xf9\xf3\xe7ϟ>|\xf9\xf3\xe7ϟ>|\xf8s)\xf1\xfc\xbb\r\xf3\xe7\xd0\xdf>|\xf9\xf3\xea\xef\x9f>|\xf9\xf3\xe8U\xdf>|\xf9\xf3\xe7ϟ>|\xf9\xf3\xf55\xdf>|\xf9\xf3\xe7ϟ>|\xf9\xf3\xe7ϟ>\x00#(& JZ\xc2+Z\xea\x05W\x88'G\x80\x11\x94\x13\x10%-a\x15\xadu\x02\xab\xc4\x13\xa0\x8c\xa0\x98\x81)k\b\xadk\xa8\x15^ \x9d\x1e\b\xca\t\x88\x12\x96\xb0\x8aֺ\x81U\xe2\t\xd0\x022\x82b\x04\xa5\xac\"\xb5\xae\xa0Ux\x82tn\x04\x85\b\x81)k\b\xadk\xa8\x15\x03\xe0\x00\x00\t\xcbp\x19\xf4\xb7\x94\x97`\x84\xbf\x04\x1eY\x02\xbcl\xe5\xb8\f\xfa[\xcaK\xb0B_\x82\x0f,\x81g-\xc0g\xd2\xdeR]\x82\x12\xfc\x10yd\n\xf2r\xdc\x06}-\xe5%\xd8!/\xc1\a\x96@\xac\x9c\xb7\x01\x9fKyIv\bK\xf0A\xe5\x90+\x7f;\xee'\xd2\xdeR]\x82\x12\xfc\x10\x1f\x01\x80\n\xae\xf9\xf0\x18\r\x8cW\x91\xdb\x1d\x98RE\x03\u0604\x9b\f\xf1\xac\x06\xc6+\xc8\xed\x8e\xcc)\"\x81\xecBM\x86`61^GlvaI\x14\x0fb\x12l3\xc6\x03c\x15\xe4v\xc7f\x14\x91@\xf6!&\xc31\x80\xd8\xc5y\x1d\xb1م$P=\x88I\xb0\xcd\xc3\a\xb2^GlvaI\x14\x0f`|\x04\x00)\xf3\xe7ϟ>\a\xae\xa1\x8f\xa9\ty\xfa\x0fj\xcf\xf1\xdd\xff\xad\x1e\x03\xd7P\xc7Ԅ\xbc\xfd\a\xb5g\xf8\xee\xff֞\xba\x86>\xa4%\xe7\xe8=\xab?\xc7w\xfe\xb4y\xeb\xa8c\xeaB^~\x83ڳ\xfcw\x7f\xeb@z\xea\x18\xfa\x90\x97\x9f\xa0\xf6\xac\xff\x1d\xdf\xfaѿ\xf6\x14^\xa4%\xe7\xe8=\xab?\xc6\x0f\x80\x00\x00*\xec\xb0\xeb\x89\xceb\x9e\x03\r\xfc\xac\xb2\xe8\x90\xf1\xb5vXu\xc4\xe71O\x01\x86\xfeVYtH\xab\xb2î'9\x8ax\f7\xf2\xb2ˢCʻ,:\xe2s\x98\xa7\x80\xc3\x7f+,\xba$2\xae\xcb\x0e\xb8\x9c\xe6)\xe00\xdf\xca\xcb.\x89\r\xfdg\x96\xae'9\x8ax\f7\xf2\xb0\x00\x00\x00\x00\x00\xe4\xa2")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
go test fuzz v1
2+
[]byte("b\x02\x00\x00 00000000000\x03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
go test fuzz v1
2+
[]byte("\x0e\x03\x00\x00 00000000000\x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")

pkg/format/rtpac3/testdata/fuzz/FuzzDecoder/3dd84621c73ca20d

Lines changed: 0 additions & 5 deletions
This file was deleted.

pkg/format/rtpac3/testdata/fuzz/FuzzDecoder/4ebd8d8a74720ab4

Lines changed: 0 additions & 5 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
go test fuzz v1
2+
[]byte("\x0e\x03\x00\x00A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")

pkg/format/rtpac3/testdata/fuzz/FuzzDecoder/6e4a39b949e5782c

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)