From f93af80823c1e1da9751c1367c7e3229e0373647 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Tue, 15 Nov 2022 21:51:16 -0800 Subject: [PATCH 1/8] Create a fuzzer for the demuxer --- demuxer_test.go | 14 ++++++++++++++ ...5c2eee87f57b611119b55adcf10be45687b39d89ae38205 | 2 ++ ...8c87ab80a3765a8e0820ae74bec632b695e8c3a3c68f448 | 2 ++ ...f1c7710f44bcdade975fd7660f9d85d79536a34d904cf70 | 2 ++ ...e7baa2c62d5ae36346e4253b8883cdff93c016105516711 | 2 ++ ...ab10dbe942e8cabfebc714d0c727db405a5764eba605ba4 | 2 ++ 6 files changed, 24 insertions(+) create mode 100644 testdata/fuzz/FuzzDemuxer/3613c76a2489ae2ec5c2eee87f57b611119b55adcf10be45687b39d89ae38205 create mode 100644 testdata/fuzz/FuzzDemuxer/675671b6f2ad170dc8c87ab80a3765a8e0820ae74bec632b695e8c3a3c68f448 create mode 100644 testdata/fuzz/FuzzDemuxer/9f12197b2060d80d1f1c7710f44bcdade975fd7660f9d85d79536a34d904cf70 create mode 100644 testdata/fuzz/FuzzDemuxer/c9386b0717370f896e7baa2c62d5ae36346e4253b8883cdff93c016105516711 create mode 100644 testdata/fuzz/FuzzDemuxer/ea43ffbf0b7f89ff4ab10dbe942e8cabfebc714d0c727db405a5764eba605ba4 diff --git a/demuxer_test.go b/demuxer_test.go index 8fe9ecb..db4daf9 100644 --- a/demuxer_test.go +++ b/demuxer_test.go @@ -194,3 +194,17 @@ func BenchmarkDemuxer_NextData(b *testing.B) { } } } + +func FuzzDemuxer(f *testing.F) { + f.Add([]byte("content")) + f.Fuzz(func(t *testing.T, b []byte) { + r := bytes.NewReader(b) + dmx := NewDemuxer(context.Background(), r, DemuxerOptPacketSize(188)) + for { + _, err := dmx.NextData() + if err == ErrNoMorePackets { + break + } + } + }) +} diff --git a/testdata/fuzz/FuzzDemuxer/3613c76a2489ae2ec5c2eee87f57b611119b55adcf10be45687b39d89ae38205 b/testdata/fuzz/FuzzDemuxer/3613c76a2489ae2ec5c2eee87f57b611119b55adcf10be45687b39d89ae38205 new file mode 100644 index 0000000..a1edb42 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/3613c76a2489ae2ec5c2eee87f57b611119b55adcf10be45687b39d89ae38205 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G@\x00\x1e\x00\x00\xb0\r\x02\xfe\xc1\x00\x00\x06G\xf7\xbb\xbe\xbc\t\xc6\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGW\xbb\x1b\x00\xc1\x007\x00eng\x06G\x00\x00p\x00\x13\x00\x11SOP: SERVICE 1963\x13\x00\x11SOP: SERVICE 1963\x00\xb1Ѡ\xd9\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGW\xbb\x1c\x00\xc0\x002\x00\x06G\x00p`\x00Ppy\x98\x01\x00\x00\x00\x00\x00Pq\xcb\x18\x00\x00\x00\x00\x00\x00\x00\x03\n\x00\x01\x01\x03\x00\x01 \x01\x01\x03\x00\x01 \xc0\x01\x00\x06\n/3\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGW\xbb\x1d\x00\x02\xb0o\x06G\xcd\x00\x00\xf7\xbc\xf0\x06\x05\x04GA94\x02\xf7\xbc\xf0\x1d\x11\x01\xff\x10\x06\xc0\xbdb\xc0\b\x00\x06\x01\x02\x86\r\xe2eng\xc1?\xffeng@?\xff\x81\xf7\xbd\xf0\x18\n\x04eng\x00\x05\x04AC-3\x81\n\b8\x05\xff\x1f\x01\xbfeng\x81\xf7\xbe\xf0\x18\n\x04spa\x00\x05\x04AC-3\x81\n\b(\x05\xff\x1f\x01\xbfspa`\xd2\v\xcb\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG\x17\xbc\x15\xe7\xcc_\x15\xf6M\x0f\xcbmõr2\x11\xc4\xe7\xbc\xce\xec2\xb3\xe5\xa3\xce+\xb2\x0f\x1cw\x7fy5\xa6\xb1\x14\xef.\x9d\x8c\x18\xac\xa3F\f\x96mc\xcf(.H\xc2\x135\x9bߙ\x9e\xec\xeeX\xc6E\xda\xd1\xc1\"I\xcc\xd8\x00\xf5m5\xd6H\xd0_u\xfa\x92\x873{\x9b\x91\x87\xf3\x1ax\xe9\xc9\rh\xd7\xea\x00\xd4P\xa1\x13n\xe3]\xee\x00N&jp\xf5U\x01\xc3\x0f\x9f\x8d\xfa\xb96\xb1\xf6\x00U\xf0\xecq\xb9\x1fR)\xac\xe7{\xb4vF/\x1c:C2\xb4c\xd8\x01\x8f\xdf\\\x95\xfbu\x87\xc7`\x0f\xc5\xfbۯ\xef\x1c\x94\xa9\xb62\xc1B\x84d\xb3\x8ca\x9b&͌\x89\xec\xc9\xc3\x03\x9a6G\x17\xbd\x1d\xc1\x01kz(إg@\x19\x1d\xac\xa8\x02\xe3\x00\x18\x961\"\xbe\xd4\xfa\x9cA\xd8\a\x17\x92\xf0ub\xa0\x9b\x90\x9f\xf7\xedlI\xee\a$\x13i\fє\xe1\xc8|\x81\xb1\xb7M\xfb&\xd6\xe8!l\xb8\xf7\x01\xa9&\a\x90\x00\xb7\xe0,\x02\x1a\a&\a*\x9f\xd5\xe9\x1d\xd64\xa0\xd7l\x03Sp\xa3ݱ\xc0\xb5\x15i\xb2=\xba\x9e\x02B\\\xc6\x14\xb3\xd6\xe5w#J»\xba\x95\x8e@\x80\x88b*\x80\x18\x0f\xf9\xe4T3\x83\x9b\xdb\xf0|L\x19\xbb'Lӷ\x8e\x8d\xb9l\x99\xb3\xb5\xa93x\xff\xc0\x17\xfd\x10\xff\xfa(\xa1@2kAç\x1f\x8bKu\xce@\xd3Y\x13ӣCK\x92\xf0QL-G\x17\xbc\x16\xbeۺ\xbbk\x1f\xab\xb1\xdd\x15\x03\xe5d\xaf\x8c\xdf\xf8\x82\xab\fIu\xa3\xb1\xef\xadH\x03\x0eM\xfam\xc6\xd0\xf5\xba\xd4\x00 \x040\ac\re\xe4\x99Z>\x80\x03P@\x04\xee\x80\x19\x82\a\xe9v\x00\xa4\x01\xe8\xb1b];\xaf\x82\xb9\xdf7\x1b\x9c\xaeD{\xac\xb1\xb0\x00\x18\x11\x84|c\x85t\xec\xe1\xdcb&d\x92V\x02L\x9b\xcdH\x03\x9d\xac@\x17s/\xd5\xeect\xc6,\xb6[\xb5Qɍ\x1a\x7f\xf2c\x9f\xcb\xe9\x8e\xc7Sv\x94a\x92\xebw\xc1\x03\xe3A\x03\xe8y\xf6\xf9p\x03\x00\x06\xde\xfb\x1d\x04\xce\x17\x8a\x9a\x84\xff\xce\xdb\x1f\x9b\x16b\xcdn@ }\b\x01\x1b\x80\b\x80\b>\xfd\x93\xcc\x16G\x17\xbc\x17'\xaez\xe2ʖ[\xc5[\x81\xb8\xde\xc4\x00\x8c\x01\x99\x14\x01\x88\x02\xbe}\xf9\xdd|\xdfw\xc7M\xb6\xe4\x9bt\xc5\x01U&\x16\xb9\x1b0\x06\x84l\xb4\x02\xbd\x90\xa3\t\xc6\xc3b\xd5\xf5\xca\xdb\x00'\x00\x7f\xb9\x93\xd8S\xcc\xd4\xfc\xd9k\x00\x00\x00\x01!\x12?\x8d{\x93^3\xf2\xf2\x1dk\xf9?Z\xa1o\xbeoP\tu\xad\xef*\xd6ˢ`I+\x15\xb6\x17C\xebF\\\xce\xf9\x7f!\xb6\xb5n\xc6m\x87\xb4\xb3\xdc)Z;\x1e\x04F\x93&2\xee\x16s6\xc6MZ{\xda2\xf6g\xba\x9e˪\xa8Ŗ31\xa3n\x8a{!\x1c\xa71\x99\xf9`EdW\x9cc\xf4\xd1\xdc\xf9\xb1\x9f\x9c\U000cc3fa\xc7G\x17\xbc\x18\x8b\rdk3\x1a\b\xdb\x1c\x91\x9a\x9e\xd5\xf2\xcfc&v4v?\x19u8\x11\xbb\xb4\xc31\xa3n\x04\x0f\xc8\xf7\xec\x88\x00@\x00\xff\x91\x1b]ι\xdc\x1a59~;Y\xf6\xff'n\xb2vy\xecƈ\xe1\xce\x06\xe3\b@T\x048\x04\xe0\fɼ1\xb93\x14\x94>7\xeaJ\x15A\x80\x18\x14\x05\x06\x01]\xba\x12\x92\x9b\xa0\x8e\x9a+$4\xbc\x8d\x00fLv~o\x80\x1e\x10\xd8h\x8d\xa8$\xe5\xf5\xc7n\xe7\xf2\xedn0\x03/\xa1\x06\xf9\xee6\x00\a\xc0\t\xa7?\x12\tɱ\x00\x89u\xb0\x91\x80\x17g\xc6\x1b\xc6\xc7\xe49\xdaMnM~7v;u\xa3q}G\x11\t\x86S\x1b\xa1\xd7ȱ\x02G\x17\xbc\x19W\x87\xbe\x19\x7fV\xb6`\a\xffw\x9aN3f\x13\x1bH\xa4\xddj\x8d-\x11\x88@\xa50\x01\xe0\t\x80\x1d\xf1\x8cM\xc3q>!\x86r`\x0e\xca\x1a\x19\xd8Q\xb0\x01`b\x1f\xaa!\x01Bg+fT\x05R\xd0\b\x11\xf8\x9b|\a\xb3\nH\f\x13a\x80S\x14\xba(\x06-\xf2\v\v\x80v\x9e\xdb\xf1O\x16\xde&a\x87\xeb]\v\x8c\x00d\x92h\x18\x01\x8b\xa3\xb2\xce\x1f\xa2ёיp\x02@\xdc\x02\x94\x97Ǫ\x02\x80P4!\x02\xb5:\xe9\xa8$\xf99\x1cV8\xde\xf6\xe7S\v\xdaݰ\x02߯\xc7~\xce\x15м\xe5\xf3V\x99U\xb9\x00\b\xc5\xf1\x80\r\x85ݥ\xbf\x13\x1b\xd7n\x15\xad\xcf\xfc") \ No newline at end of file diff --git a/testdata/fuzz/FuzzDemuxer/675671b6f2ad170dc8c87ab80a3765a8e0820ae74bec632b695e8c3a3c68f448 b/testdata/fuzz/FuzzDemuxer/675671b6f2ad170dc8c87ab80a3765a8e0820ae74bec632b695e8c3a3c68f448 new file mode 100644 index 0000000..700742c --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/675671b6f2ad170dc8c87ab80a3765a8e0820ae74bec632b695e8c3a3c68f448 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G \x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000") diff --git a/testdata/fuzz/FuzzDemuxer/9f12197b2060d80d1f1c7710f44bcdade975fd7660f9d85d79536a34d904cf70 b/testdata/fuzz/FuzzDemuxer/9f12197b2060d80d1f1c7710f44bcdade975fd7660f9d85d79536a34d904cf70 new file mode 100644 index 0000000..28d00d9 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/9f12197b2060d80d1f1c7710f44bcdade975fd7660f9d85d79536a34d904cf70 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G_\xff\x10#SEGMENT\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@\x11\x10\x00B\xf0%\x00\x01\xc1\x00\x00\xff\x01\xff\x00\x01\xfc\x80\x14H\x12\x01\x06FFmpeg\tService01w|C\xca\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@\x00\x10\x00\x00\xb0\r\x00\x01\xc1\x00\x00\x00\x01\xf0\x00*\xb1\x04\xb2\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGP\x00\x10\x00\x02\xb0+\x00\x01\xc1\x00\x00\xe1\x00\xf0\x00\x1b\xe1\x00\xf0\x00\x0f\xe1\x01\xf0\x00\x15\xe1\x02\xf0\x0f&\r\xff\xffID3 \xffID3 \x00\x0f^\xe9Տ\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGA\x000\aP\x00\x00\x05\xdd\xfe\x00\x00\x00\x01\xe0\x00\x00\x80\xc0\n1\x00\x01Fc\x11\x00\x01\x17w\x00\x00\x00\x01\t\x10\x00\x00\x00\x01gM@\x1f\xec\xa0(\x02\xdd\b\x00\x00\x1fH\x00\aS\x04x\xc1\x8c\xb0\x00\x00\x00\x01h\xea\xef \x00\x00\x01\x06\x04G\xb5\x001GA94\x03\xd4\xff\xfc I\xffC\"\xfe I\xfe\x00\x00\xfd\x80\x80\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xfa\x00\x00\xff\x80\x00\x00\x01e\x88\x82\x00\x0e\xff\xd2^\x1b\xd9#\xe1\xe7?\x83\xf7x\x8d\x01\xf9\x8c\xbf\xba\xb2O:To*`\xc1\x9d\xc3\x1d>\xb7G\x01\x00\x11\xa8\x01\x83\xf1\xdb\xf0\xb0\xf3\xc3\x05\xff\xf6T\xf3\x02\xa9\xd0\xc6K\x17\xb6\xee\xc9\xfeJ\x97I\x15\xbfl%\xa7\xe5\x0f\xdf\xd8\x03ye\xb4!}\xbc0\x90\x90\x11#\xdbT\x92\x8eJ\xf0%\xfb\xeb\nH\xf2\x1fG\x9fߓ\x14vm\xc4\xc8\x04\x9e\x95\xe2\xbajYI8\x99\x990\x83O3\xf8\x8c\xb5\x99;\x03q\xcf>\x00\xd9\xdc\xfe\t\x89u\xa7du\xdepK.7\x87\xb8\xa3!l*P\u05ec\xeaS\x8d%/\xfb\x9e\xe8\x00\xb9\x8d02\x166\xe9\xddj\xc7T\x13\xc3\a\xa7\xef]\xb2A=Ф\x98\x01O\xed \x82\x94D\xbe7wA\x10\xe5y\xe7\x01\x18\x13ֈS\xf3Z\xe7'VX\xe3\x1f\xb0\xbf\xc6I\xf7\x9f\xf9{\u07bc3Y\xc3\r\x98\xea\x91\xd4\x04b\x9bR\xa23\xac\xb5\xe9a\xf0\xe80\xb4Y\xf8̦~\xc4\x1e\xb9\xde\xee\xa7\U0010c756\x1d1s\xc0\xde4\x02\xb5\xf1G\x01\x00\x15\xba$P~\x8e5u\vf1\x82@9\xdcK\xa3S\xa1\xd0\xc1N\xd5Uj\xe8X\xdb\x16\xa8Byf\xdb1\b\xf1\x0e:\x90\xbd~[\x9aσ\xea\xbe\xf1\xa0\xf8d\xcb/\xbdU\xb0\xa0g\xd1\xe1\xb6\x13B\x06\xe5\xcaB\xe3}l\x8f\xca!\xa2ȱW\x9elm\xfb\xd0\x02\x0fَj\xd7\xd2@\x90\x17\x90h\x98\xf8\xc8\xd9\xc5\x17\x8d\x0eH\xf4g\x0f\xb2\x8d\x85\x900\xc2\xefBx)\xf5eX\x00z\x9c\xb8\f\a\x17\xfd\xc1\xf8\x80\xa5\x96Ւ\x13\xb1\xdel'\xbe\xc8T'\xbd\x9e\xa9h\x066\xb3GX\xd1x\x93b̉s\xcd\xfa\x92~\xf2v\xe3\x10\xa4\x03\x1cs\x9bu\x1c\\\x11\xe8\xdb\x19\xcd\xeb\x84\x01\xb4") \ No newline at end of file diff --git a/testdata/fuzz/FuzzDemuxer/c9386b0717370f896e7baa2c62d5ae36346e4253b8883cdff93c016105516711 b/testdata/fuzz/FuzzDemuxer/c9386b0717370f896e7baa2c62d5ae36346e4253b8883cdff93c016105516711 new file mode 100644 index 0000000..7fcc915 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/c9386b0717370f896e7baa2c62d5ae36346e4253b8883cdff93c016105516711 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G_\xff\x10#SEGMENT\x00#TAG:AD\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@\x00\x10\x00\x00\xb0\r\x00\x00\xc1\x00\x00\x00\x01\xf0\x00q\x10\xd8x\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGP\x00\x10\x00\x02\xb0\x17\x00\x01\xc1\x00\x00\xe1\x00\xf0\x00\x0f\xe1\x01\xf0\x00\x1b\xe1\x00\xf0\x00\xf2\xd9\x15c\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffGA\x01\x10\x00\x00\x01\xc0\x01\b\x84\x80\x05!\x00\x01\x1e\xf1\xff\xf1L\x80 \x1f\xfc!\x19\x8f\xff\xff\xff\xff\xf3\x16ZM\x92\x94\xc3@\xb0PL\x1d\x10\x00@\x05\xd4&\x86\\=\x81\x1e\xbe\x91\x9b\x1cm\xf1\xdch\xd1\xe8.H<\xbbb\xf9b\x1ax\x87\xdc\x04>|5\xa2\x12\xfd,\xacE\x15V\x02\b\xd5ui\x94\x90\r\xfcI\xe8\xbbYv\x03\x12\x1a\b\xdeN#$\xaa#a\x92\x99\f\x8edʚ\x81n\xd3h\xf3\xad\x0ege\xd1D*\v\xe9j\xd8U5-\x9e\xe58\xfcc\x02C9J\x99\x1c\xbc˫|s2\xce<\xaa\x17\x93\x87\x81\\Łd\x9b){\x80\xd8\xe9\xab;\x1an\x92C\x11\x03r\fA \x19\x14\x02G\x01\x011a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\xe9\x00\x90v\x00Q-\x017\xcbӬH\x06s\xb6N\x19\x8c\xb7-\x00*\x03M\xf8\xcfy\tV\xa4\xa8i\xe3L)\b-\x9a6\tN\x02f\xec\v\xd6SB4\x1b\x93\x80\xfc\xfc\xbc3\xa9\\\xd5\xdc*\xa8*7\xf8&\xddV\xe93\xc9\xd7\xe7\x03dʀ\x16\x81\xf2\xe8\x9bA\xc0GA\x000\a\x10\x00\x00\x05\xdc~\x00\x00\x00\x01\xe0\x00\x00\x84\xc0\n1\x00\x01FQ\x11\x00\x01\x17q\x00\x00\x00\x01\t\xf0\x00\x00\x00\x01gd\x00\x1f\xac\xd9@P\x05\xbb\x01\x10\x00\x00\x03\x00\x10\x00\x00\x03\x03\xc0\xf1\x83\x19`\x00\x00\x00\x01h\xeb\xec\xb2,\x00\x00\x01e\x88\x84\x00\x9f\x99=\x94](lϬo\x13,\x9f\xdd\xfb\xa5@\x9e\xf4\xaeihrH\x1f\x93X\xbe=@\x88\xd5D\x88p\x14\x9c\n\x98\x13E\xc7D'[E\x1bo}z\xe7`\x03|\xacsY\x12Y\xe6H\xa5\xf5}a\xe1v\xa3#I\xc1\xabQ\x10\x1cl\xe0o\x17\xd4\xcfW>\x83\b\x13㹺4AyV/B\x99\xa9\xc5\x11\x81ͷK\x8b\xe3G\x01\x00\x11JB\xa2M\x8e\x92\x94p\xe8\x93\xdem\xa1\xad\xef9M\xd6\x1d4\x86\x83\xa6\xfc*\x12\xe7\x92\xf9@\xfdH.\xaf\ue1f9\xc1\xe4\x1c\x87#\xd3\xd5\x14\xc3\xffj\x81\x14kx\x97\xd2\xf9\xe74wâ\x1d\xd3Σ\xc10 \x90\x8bD\xda\xcf\xc0\x91\xf9\xab\xe6&\x044\x1aw\xa7\xe4D\x8c\xe6\xa7ҟ\x99\xa5\\\x92<\xc5\xc7/sF\xdal\xd1Y\xcb\xc8\xfeB5\x19\x89\x91\xf6mO\xcbG\xdf'H\x1bW\xbe\xbd*\xbeY6/\xb1\x9b\x89\x89\xa4\x02n\r\xe3`\xd5V\xe4\x88\xfah\xd0oVS\x17\x16\xc0+5@(%\xb6\xd3#lr\xa5\xab\x01\xa8\x1e۴\x9af\xd4\xf5\x1f\x85\xdb\xc0\xb7\x1705\x13\xda\xc3G\x01\x00\x12\x9a\xf3\xe8\xea K֥\x91ީr \xfaݔ\x94\x92\x87\x02\xe3EQ\x1d:\xb4A\x9dFg-P\v\x97\xa3\x14d\xa4!,F\xa6\x0e܆Նu\xf1\v\x94\x19\a\xe2\xf8%:\x06\x1c\r$\xd1\xc1\b\x7f\x01\xe3Ry/\xd5\x11\xeb\x16\x94\xf7\n<ވ\xc9\xfa\x93\x1f\x86y\x8f\xe2PW\x15\x05H;ɇp&J\xddR>\xfeH\x8d\xe3T\x00\x84\x99\xf5\xb4A\x94\xc0\x87\xf3\x8a\xdf\x7fL\xbf^\xca\xe3\xa3s\x1c\x1d\xa5\xa7\x16F\xb0\x81\xa5\xeeQ\xe1\x16\xde\xe6\x05\x98\x83\x83G\xab\x9e\xeb+\x86dK\xe2\x18\xb3\x17\x11\x90\xa7}H\xf7Q!\xdc!㉱+\xedin\x97ėJ&\xedG\xce\xe2G\x01\x00\x13`\xa0V\xbb\xd5\xc8\x1ef\x10\x98\x04\x81裺\x16\u07b7auz\xbf\xcd\xcbP\x8bYv\xb5\x0f\x1b\x8a\xf6\xe7\xce\x15\xe7\xd8\xc3V\v\xbfSD\xff\xb0\r\x1f\xa8}4$5\xc8\xd5QE&\x99H\xc1q\xec.-\xf1\xf5\xb0q\xb8ps\x8d\xb7\xf7\xb6\x13+\x93\x7fa\x02\x89\x13r\xefޑ\xd7\x12T\xb7++\xfa\x16>\xa0\x18\x00'\xfdEF\xed\x84&\r\xbe\xe8f\xe1\xc0\xccu\xa3\xb1\xb9HZ\xc8ܧ\xeb\xab\x04S\xf0\x17\x13\xd9\x0e\xe3Å\x15J2\xeb\xe2u\xa6\xf9/-\x9b\b\x1b\xbf\xb18\xac\xb7\xfd\fB\xa8\xbd\x12\xe8\ru\xe9\x13\x13⎒\x11\xad\xe1=5\x01\xb9*6\xd7V\x1a\x9a\x8b\xbb:G\x01\x00\x14\x9a\xc0C\xaf\a\x06\x9f\xbd$\x95#\x87J\x9c\xb2\xba(O\x89N\xfa\x95\xe7\x9b.\x9e\xeb\xa8\xce;u\xa8v\x0f@,\x0fx;\xf4\x19-P%v\xe9c)\xe9\x95\xeb\xfbE\xb7\x10}\xf6\xb5.\x93$\x17\xf5\x12:\xce+\x85\x924\xf1\x8c\xed\x97\xce\xff\x8d2\xb6\xbf-<\x9agHO\xba\xaa\xc3PY/u\x04\x9f\x9b\x1b7\xe0:\x80\x10\xc5\xfd\xe1CA\xb2 \xff\xb66\x7f\xec\x10))\xb19\x98\xb9\xcf\xe0\xea\xe7e<\x14\x86M\xac\r1}\xae9S\xaaٻmHBM\xdf\xc3m\xb0l@\xb5\xc7\xe5\rt\xdco7\xf5\xc2\xe8\xf8s\x97m\x91l\x12yB=\xbd\xe4Ft$4\xf8HbeD\xb3\x92") \ No newline at end of file diff --git a/testdata/fuzz/FuzzDemuxer/ea43ffbf0b7f89ff4ab10dbe942e8cabfebc714d0c727db405a5764eba605ba4 b/testdata/fuzz/FuzzDemuxer/ea43ffbf0b7f89ff4ab10dbe942e8cabfebc714d0c727db405a5764eba605ba4 new file mode 100644 index 0000000..9ea67a5 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/ea43ffbf0b7f89ff4ab10dbe942e8cabfebc714d0c727db405a5764eba605ba4 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G000070000000\xc5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") From 9c631a87daab0b00a83d9ff1daab8e935f3ea8da Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Tue, 15 Nov 2022 22:24:11 -0800 Subject: [PATCH 2/8] New fuzzer testdata --- ...69742227666f0ebf4de0f9d65117a5cb135ee6e1039bad1a1703b8e4dd66 | 2 ++ ...6932987a199d86aeef773034d8334af53358d27f15f175eac97d89fc6861 | 2 ++ ...78c13225ac8013c841910c3eb5e89150b114deca770e3afb6acdc8036a91 | 2 ++ ...e15faac5a6c6806aa0fb1ffbb9dd32a569ed4503a38147a4ca9470e3497b | 2 ++ 4 files changed, 8 insertions(+) create mode 100644 testdata/fuzz/FuzzDemuxer/835769742227666f0ebf4de0f9d65117a5cb135ee6e1039bad1a1703b8e4dd66 create mode 100644 testdata/fuzz/FuzzDemuxer/ac216932987a199d86aeef773034d8334af53358d27f15f175eac97d89fc6861 create mode 100644 testdata/fuzz/FuzzDemuxer/d1e578c13225ac8013c841910c3eb5e89150b114deca770e3afb6acdc8036a91 create mode 100644 testdata/fuzz/FuzzDemuxer/ee47e15faac5a6c6806aa0fb1ffbb9dd32a569ed4503a38147a4ca9470e3497b diff --git a/testdata/fuzz/FuzzDemuxer/835769742227666f0ebf4de0f9d65117a5cb135ee6e1039bad1a1703b8e4dd66 b/testdata/fuzz/FuzzDemuxer/835769742227666f0ebf4de0f9d65117a5cb135ee6e1039bad1a1703b8e4dd66 new file mode 100644 index 0000000..80a392c --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/835769742227666f0ebf4de0f9d65117a5cb135ee6e1039bad1a1703b8e4dd66 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G \x00X\x00X0\x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") diff --git a/testdata/fuzz/FuzzDemuxer/ac216932987a199d86aeef773034d8334af53358d27f15f175eac97d89fc6861 b/testdata/fuzz/FuzzDemuxer/ac216932987a199d86aeef773034d8334af53358d27f15f175eac97d89fc6861 new file mode 100644 index 0000000..1b05185 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/ac216932987a199d86aeef773034d8334af53358d27f15f175eac97d89fc6861 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G \x00X\x00B0\x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") diff --git a/testdata/fuzz/FuzzDemuxer/d1e578c13225ac8013c841910c3eb5e89150b114deca770e3afb6acdc8036a91 b/testdata/fuzz/FuzzDemuxer/d1e578c13225ac8013c841910c3eb5e89150b114deca770e3afb6acdc8036a91 new file mode 100644 index 0000000..d843bf3 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/d1e578c13225ac8013c841910c3eb5e89150b114deca770e3afb6acdc8036a91 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G_\xff\x10#SEGMENT\x00#TAG:AD\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@\x00\x10!\x19\x8f\xff\xff\xff\xff\xf3\x16ZM\x92\x94\xc3@\xb0PL\x1d\x10\x00@\x05\xd4&\x86\\=\x81\x1e\xbe\x91\x9b\x1cm\xf1\xdch\xd1\xe8.H<\xbbb\xf9b\x1ax\x87\xdc\x04>|5\xa2\x12\xfd,\xacE\x15V\x02\b\xd5ui\x94\x90\r\xfcI\xe8\xbbYv\x03\x12\x1a\b\xdeN#$\xaa#a\x92\x99\f\x8edʚ\x81n\xd3h\xf3\xad\x0ege\xd1D*\v\xe9j\xd8U5-\x9e\xe58\xfcc\x02C9J\x99\x1c\xbc˫|s2\xce<\xaa\x17\x93\x87\x81\\Łd\x9b){\x80\xd8\xe9\xab;\x1an\x92C\x11\x03r\fA \x19\x14\x02G\x01\x011a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x92\xe9\x00\x90v\x00Q-\x017\xcbӬH\x06s\xb6N\x19\x8c\xb7-\x00*\x03M\xf8\xcf\xcdy\tV\xa4\xa8i\xe3L)\b-\x9a6\tN\x02f\xec\v\xd6SB4\x1b\x93\x80\xfc\xfc\xbc3\xa9\\\xd5\xdc*\xa8*7\xf8&\xddV\xe93\xc9\xd7\xe7\x03dʀ\x16\x81\xf2\xe8\x9bA\xc0GA\x000\a\x10\x00\x00\x05\xdc~\x00\x00\x00\x01\xe0\x00\x00\x84\xc0\n1\x00\x01FQ\x11\x00\x01\x17q\x00\x00\x00\x01\t\xf0\x00\x00\x00\x01gd\x00\x1f\xac\xd9@P\x05\xbb\x01\x10\x00\x00\x03\x00\x10\x00\x00\x03\x03\xc0\xf1\x83\x19`\x00\x00\x00\x01h\xeb\xec\xb2,\x00\x00\x01e\x88\x84\x00\x9f\x99=\x94](lϬo\x13,\x9f\xdd\xfb\xa5@\x9e\xf4\xaeihrH\x1f\x93X\xbe=@\x88\xd5D\x88p\x14\x9c\n\x98\x13E\xc7D'[E\x1bo}z\xe7`\x03|\xacsY\x12Y\xe6H\xa5\xf5}a\xe1v\xa3#I\xc1\xabQ\x10\x1cl\xe0o\x17\xd4\xcfW>\x83\b\x13㹺4AyV/B\x99\xa9\xc5\x11\x81ͷK\x8b\xe3G\x01\x00\x11JB\xa2M\x8e\x92\x94p\xe8\x93\xdem\xa1\xad\xef9M\xd6\x1d4\x86\x83\xa6\xfc*\x12\xe7\x92\xf9@\xfdH.\xaf\ue1f9\xc1\xe4\x1c\x87#\xd3\xd5\x14\xc3\xffj\x81\x14kx\x97\xd2\xf9\xe74wâ\x1d\xd3Σ\xc10 \x90\x8bD\xda\xcf\xc0\x91\xf9\xab\xe6&\x044\x1aw\xa7\xe4D\x8c\xe6\xa7ҟ\x99\xa5\\\x92<\xc5\xc7/sF\xdal\xd1Y\xcb\xc8\xfeB5\x19\x89\x91\xf6mO\xcbG\xdf'H\x1bW\xbe\xbd*\xbeY6/\xb1\x9b\x89\x89\xa4\x02n\r\xe3`\xd5V\xe4\x88\xfah\xd0oVS\x17\x16\xc0+5@(%\xb6\xd3#lr\xa5\xab\x01\xa8\x1e۴\x9af\xd4\xf5\x1f\x85\xdb\xc0\xb7\x1705\x13\xda\xc3G\x01\x00\x12\x9a\xf3\xe8\xea K֥\x91ީr \xfaݔ\x94\x92\x87\x02\xe3EQ\x1d:\xb4A\x9dFg-P\v\x97\xa3\x14d\xa4!,F\xa6\x0e܆Նu\xf1\v\x94\x19\a\xe2\xf8%:\x06\x1c\r$\xd1\xc1\b\x7f\x01\xe3Ry/\xd5\x11\xeb\x16\x94\xf7\n<ވ\xc9\xfa\x93\x1f\x86y\x8f\xe2PW\x15\x05H;ɇp&J\xddR>\xfeH\x8d\xe3T\x00\x84\x99\xf5\xb4A\x94\xc0\x87\xf3\x8a\xdf\x7fL\xbf^\xca\xe3\xa3s\x1c\x1d\xa5\xa7\x16F\xb0\x81\xa5\xeeQ\xe1\x16\xde\xe6\x05\x98\x83\x83G\xab\x9e\xeb+\x86dK\xe2\x18\xb3\x17\x11\x90\xa7}H\xf7Q!\xdc!㉱+\xedin\x97ėJ&\xedG\xce\xe2G\x01\x00\x13`\xa0V\xbb\xd5\xc8\x1ef\x10\x98\x04\x81裺\x16\u07b7auz\xbf\xcd\xcbP\x8bYv\xb5\x0f\x1b\x8a\xf6\xe7\xce\x15\xe7\xd8\xc3V\v\xbfSD\xff\xb0\r\x1f\xa8}4$5\xc8\xd5QE&\x99H\xc1q\xec.-\xf1\xf5\xb0q\xb8ps\x8d\xb7\xf7\xb6\x13+\x93\x7fa\x02\x89\x13r\xefޑ\xd7\x12T\xb7++\xfa\x16>\xa0\x18\x00'\xfdEF\xed\x84&\r\xbe\xe8f\xe1\xc0\xccu\xa3\xb1\xb9HZ\xc8ܧ\xeb\xab\x04S\xf0\x17\x13\xd9\x0e\xe3Å\x15J2\xeb\xe2u\xa6\xf9/-\x9b\b\x1b\xbf\xb18\xac\xb7\xfd\fB\xa8\xbd\x12\xe8\ru\xe9\x13\x13⎒\x11\xad\xe1=5\x01\xb9*6\xd7V\x1a\x9a\x8b\xbb:G\x01\x00\x14\x9a\xc0C\xaf\a\x06\x9f\xbd$\x95#\x87J\x9c\xb2\xba(O\x89N\xfa\x95\xe7\x9b.\x9e\xeb\xa8\xce;u\xa8v\x0f@,\x0fx;\xf4\x19-P%v\xe9c)\xe9\x95\xeb\xfbE\xb7\x10}\xf6\xb5.\x93$\x17\xf5\x12:\xce+\x85\x924\xf1\x8c\xed\x97\xce\xff\x8d2\xb6\xbf-<\x9agHO\xba\xaa\xc3PY/u\x04\x9f\x9b\x1b7\xe0:\x80\x10\xc5\xfd\xe1CA\xb2 \xff\xb66\x7f\xec\x10))\xb19\x98\xb9\xcf\xe0\xea\xe7e<\x14\x86M\xac\r1}\xae9S\xaaٻmHBM\xdf\xc3m\xb0l@\xb5\xc7\xe5\rt\xdco7\xf5\xc2\xe8\xf8s\x97m\x91l\x12yB=\xbd\xe4Ft$4\xf8HbeD\xf7") diff --git a/testdata/fuzz/FuzzDemuxer/ee47e15faac5a6c6806aa0fb1ffbb9dd32a569ed4503a38147a4ca9470e3497b b/testdata/fuzz/FuzzDemuxer/ee47e15faac5a6c6806aa0fb1ffbb9dd32a569ed4503a38147a4ca9470e3497b new file mode 100644 index 0000000..afce680 --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/ee47e15faac5a6c6806aa0fb1ffbb9dd32a569ed4503a38147a4ca9470e3497b @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G00X\x00\x00\x010\x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") From d16aa2540f00b3917fa740de985083cb2f06fd66 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Tue, 15 Nov 2022 22:24:59 -0800 Subject: [PATCH 3/8] Handle corrupted PES --- data_pes.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data_pes.go b/data_pes.go index 61b19b1..7ca4142 100644 --- a/data_pes.go +++ b/data_pes.go @@ -129,6 +129,12 @@ func parsePESData(i *astikit.BytesIterator) (d *PESData, err error) { return } + // Validation + if dataEnd < dataStart { + err = fmt.Errorf("astits: parsing PES header failed: data end %d is before data start %d", dataEnd, dataStart) + return + } + // Seek to data i.Seek(dataStart) From d3a665f73b401cb7228a402101fb08f6b8f3b705 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Tue, 15 Nov 2022 22:25:10 -0800 Subject: [PATCH 4/8] Handle infinite loop in decoding descriptor --- descriptor.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/descriptor.go b/descriptor.go index 943604a..b391d22 100644 --- a/descriptor.go +++ b/descriptor.go @@ -1238,17 +1238,18 @@ func newDescriptorVBIData(i *astikit.BytesIterator, offsetEnd int) (d *Descripto // Data service descriptor offsetDataEnd := i.Offset() + dataServiceDescriptorLength for i.Offset() < offsetDataEnd { + // Get next byte + if b, err = i.NextByte(); err != nil { + err = fmt.Errorf("astits: fetching next byte failed: %w", err) + return + } + if srv.DataServiceID == VBIDataServiceIDClosedCaptioning || srv.DataServiceID == VBIDataServiceIDEBUTeletext || srv.DataServiceID == VBIDataServiceIDInvertedTeletext || srv.DataServiceID == VBIDataServiceIDMonochrome442Samples || srv.DataServiceID == VBIDataServiceIDVPS || srv.DataServiceID == VBIDataServiceIDWSS { - // Get next byte - if b, err = i.NextByte(); err != nil { - err = fmt.Errorf("astits: fetching next byte failed: %w", err) - return - } // Append data srv.Descriptors = append(srv.Descriptors, &DescriptorVBIDataDescriptor{ From 253ea40692a81ea514e5edb289af861e4fd054e9 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Tue, 15 Nov 2022 22:25:25 -0800 Subject: [PATCH 5/8] Handle corrupted PSI --- data_psi.go | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/data_psi.go b/data_psi.go index e0c3e78..f06a816 100644 --- a/data_psi.go +++ b/data_psi.go @@ -462,18 +462,42 @@ func (d *PSIData) toData(firstPacket *Packet, pid uint16) (ds []*DemuxerData) { // Switch on table type switch s.Header.TableID { case PSITableIDNITVariant1, PSITableIDNITVariant2: - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, NIT: s.Syntax.Data.NIT, PID: pid}) + var nit *NITData + if s.Syntax != nil { + nit = s.Syntax.Data.NIT + } + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, NIT: nit, PID: pid}) case PSITableIDPAT: - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PAT: s.Syntax.Data.PAT, PID: pid}) + var pat *PATData + if s.Syntax != nil { + pat = s.Syntax.Data.PAT + } + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PAT: pat, PID: pid}) case PSITableIDPMT: - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, PMT: s.Syntax.Data.PMT}) + var pmt *PMTData + if s.Syntax != nil { + pmt = s.Syntax.Data.PMT + } + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, PMT: pmt}) case PSITableIDSDTVariant1, PSITableIDSDTVariant2: - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, SDT: s.Syntax.Data.SDT}) + var sdt *SDTData + if s.Syntax != nil { + sdt = s.Syntax.Data.SDT + } + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, SDT: sdt}) case PSITableIDTOT: - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, TOT: s.Syntax.Data.TOT}) + var tot *TOTData + if s.Syntax != nil { + tot = s.Syntax.Data.TOT + } + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, TOT: tot}) } if s.Header.TableID >= PSITableIDEITStart && s.Header.TableID <= PSITableIDEITEnd { - ds = append(ds, &DemuxerData{EIT: s.Syntax.Data.EIT, FirstPacket: firstPacket, PID: pid}) + var eit *EITData + if s.Syntax != nil { + eit = s.Syntax.Data.EIT + } + ds = append(ds, &DemuxerData{EIT: eit, FirstPacket: firstPacket, PID: pid}) } } return From 4dd4a78b4df4bf5d7e12a1209bff5f559acaf00a Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Tue, 15 Nov 2022 22:36:50 -0800 Subject: [PATCH 6/8] Add a couple more test cases --- ...6c5d01716faefd01ee027121ab635b343d5423e9c20e27dd4e27619eaf31 | 2 ++ ...436174e9321657131246dd602da216b479eb7a247017b104614f11f3e50f | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 testdata/fuzz/FuzzDemuxer/1acf6c5d01716faefd01ee027121ab635b343d5423e9c20e27dd4e27619eaf31 create mode 100644 testdata/fuzz/FuzzDemuxer/49be436174e9321657131246dd602da216b479eb7a247017b104614f11f3e50f diff --git a/testdata/fuzz/FuzzDemuxer/1acf6c5d01716faefd01ee027121ab635b343d5423e9c20e27dd4e27619eaf31 b/testdata/fuzz/FuzzDemuxer/1acf6c5d01716faefd01ee027121ab635b343d5423e9c20e27dd4e27619eaf31 new file mode 100644 index 0000000..159162a --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/1acf6c5d01716faefd01ee027121ab635b343d5423e9c20e27dd4e27619eaf31 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G@\x00\x10\x00\x00\xb0\r\f7\xc1\x00\x00\x00\x01\xe00\x8a|\\\xa4\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@0\x1c\x00\x02\xb0u\x00\x01\xe7\x00\x00\xe01\xf0\x1b\x05\x04GA94\x87\x13\xc1\x01\x01\x00\xf4\r\x01eng\x01\x00\x00\x05TV-14\x02\xe01\xf0\x0e\x11\x01\xff\x10\x06\xc0\xbdb\xc0\b\x00\x06\x01\x02\x81\xe04\xf0\x18\x05\x04AC-3\x81\n\b8\x05\xff\x0f\x01\xbfeng\n\x04eng\x00\x81\xe05\xf0\x18\x05\x04AC-3\x81\n\b(E\xff\x00\x01\xbfspa\n\x04spa\x00\x8c\xc7f^\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG\x001\x13љ\xa2\xb7Cs4j\xa0\xc1\xff\xecU\x8a\xb4V\x01\x8b\xff\xd8h$\x80\xc5\xff\xed\x01\x88\x00X\xa80\x7f\xfb@b\x00\x16\x01\x8b\xff\xd8h\xe01\x00\v\x1a4\x90\x05V\x00\xc4\x00,i\xc0\x03\xa6\x18h\xd8kEiZ0\xccg\x81\t\xa3e\fh\xad\x06\xb4\x18\xacF\x1a9aLQ\xa5\xda\x006b\xa1\xac\x8a`\x00~\x054a\x19\xab\x05\rcY\r`\x03f\x8cә\x87\xb2\xda1\x9a\xb0\xcc\x1f\x80\x05\xa35\x8d\xad-ck\f\xda\tC3Eb\xac\x99\x83\x17\xff\xb4b\xb3Pa\x00\x16\x15\x9a\x83\b\x00\xb2f\xd0M\x18\xabFfL4a\x9a\xb4f\xac\x98h%\x16\xb1\xb5\x8d\xa0\xc0\x00,m\x06\x00G\x001\x14\x01d͠\x9a+\x15b\xc5A\x83\xff\xd93h%6\x83\a\xff\xb1\xb5\xa5\xa0\xc1\xff\xecֲf\f_\xfe\xd0Lk\x1aұa\x9bA)f\xac\xacՓ6\x8c\xd6fZ\f \x02\xcdA\x84\x00Y3hڳU\x05\xf0\x02e\xac\xd4\x18@\x05\x88\xcc\x18\xbf\xfd\xa3j\f \x02Ŗ\xb3V@\xc5\xff\xec\xc1\x8b\xff\xda6\x06/\xffck\x00b\xff\xf64\x18\x7f\xfe2b\xb6V\xcb\xc0}DțGڭ\x1aZѳ@\x1a5\u058c\xd0a\x00\x16-(0\x80\vJ\xd3\x19\xb4f\xb1\xac\xa0\xc4\x00,Ն\x1a9X\xb4\xa0\xc2\x00,A\x88\x00Y@a\x00\x16`\xc4\x00-\x18b\f_\xfe\xc0\x18\x80\x05G\x001\x15\x8de#0b\x00\x16\x8c\xb4hц+A4hѣ&m\x04\x91\xa3F\x8c0\xd0M\x181`\f_\xfeɩ\xa3\x8c\x18\xb0a\x86\x8e0b\xc22a\xa0\x96F\fA\x88\x00X0\xc01\x7f\xfbG\x19A\x88\x00XƑ\x86\x1a5\x06 \x01h\f@\x02ŀ1\x00\v\f4G5%\xe6\xa6*\xd4i\xbdZh\x1cS҂!\x94G,.}\x0f{\x9d(:ibS\x00\x00\x00\x01DR\x8a9\x14\x839\x14\x83<\x8d\x82\x04\x9dր\xc5\xff\xed\x1a7Cr4\x12\xb5\x06\x10\x01\xa46 \xc4\x00,(0\x80\rcA\x84\x00k\f4`\x18\x80\x05\x84f\x06 \x01e\x8c0ц\x10\x18\x7f\xfd\x8bG\x001\x16\b\f?\xfe\xcc\x18\x80\x05\x86\x82d\x8dG\x00\xc3\xff\xed~6~\t\x003eA\x88\x00Y4G\x05\x8e\x8c\f\f\x00~\b\x7f\xe8\x1a#\x11\xbc\x18Q\xf1@\x0fA\x0f\xfc\x89\xa1\xc4Pa\x00\x180\xa3\xf4\x82\xa2\xc3m\x06M\x10c\xff\xf8\x18\xff\xfe\x88֣\xc0\xc7\xff\xf4>\xf5\x11\xf7f\\\x9b\xacu~\xe8%\xf9\x88\xc6js(\xc6js`\xdd-\x1b4hєgZ\t#M9\xa3\x1as(\f?\xfe͠\x94\xcaѤh\xc8\x18\xbf\xfd\x86\x88\xc0\xb2j\xfa#\xb1\xa6\x8b\xed\x14$6\xd7D\x8e81\x00\r\x83\x10\x00\xd0K\xf3\x90b\x00\x16 \xc4\x00,\x01\x88\x00X\x83\x10\x00\xb7%<\x00vݭG\x001\x17\x1c\xa7\x80\x0e\x9a@a\x00\x16\x94\xf0\x01\xd3H\f \x02\xcc\x18\xbf\xfd\x94=\xa3\x15\x849\x9a\xb2Ø\xac\x81\x88\x00ZAeo\xa3\xf9\xb49\x8da\x0ec[\x99\xba\xe8ƈ\xe0\xb1Vp\xaa\x82_\x9d\xd0a\x00\x16 \xc4\x00,(0\x80\v\x10b\x00\x16\xe4\x8d\xd9A\x84\x00Z\"\x02\xcbف\x15\xa9\xb5\x83\x10\x00ѳ\x83\b\x00\xd1\x15\x8aD\x94Q\x11\x1a\x88\x83\x1f\xff\xd01\x7f\xfc\f\x7f\xffTFc<\x18\xff\xfe\x9e\x06?\xff\x8a\x06/\xff\xb4.z\xea\xda9*\x8d\xb4\x11ʙ\xe3渧\xa2/@\xc6\x004Fa\x10\x9b]\x11h\x81\xaa\xba\xbe=\x83\x17\xff҂1\x82O\x98\x00\xc8\ni(0\x00G\x001\x18\v@b\x00\x1a\xd2\x1e\x00:lA\x8b\xff\xdbv\x8dF4\x06/\xffh1\xa3\x185\x9dh\xd8\x18\xbf\xfd\xa3\nŕ9\x98\xc0\xb0b\xff\xf6\x829A\x8b\xff\xd8\xd0a\x00\x16\x14\x18\xbf\xfd\x9a\x83\b\x00\xb3\x8ci\xd0\x03p-\xa4\x163\x82O\x99\xb1V\x83Z7;t\xb4\x82ǙG\xf3E\x06\x00\x01h\f@\x02Ѡ1\xff\xfbs\x14\x8d\xd2\f@\x02ъ0\x90\x84\xa8Kfӂǀ\v\xe0\v\x98Q\x84\x84%B[\x1d8\xf1\xa3\xd0\x00g\x19\x83\x17\xff\xb01\xa3z\x7f\x88\x0f\xc0\xb8Ɯ\x00:\xa46\x14\xf0\x01\xf8\x17\x18Ӏ\aT\x86\xc8`\x16\x05\xb3hJiPm\x1f\xcfM\b\xf4\x02\xda\x1aG@\x00\x11\x00\x00\xb0\r\f7\xc1\x00\x00\x00\x01\xe00\x8a|\\\xa4\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG\x001\x19\f\x00\x04\xcdA\x87\xff\xd8\xc0a\x00\x1a\xdcHݠ\xc5\xff\xed\x1a\x1a\xa0h\x92\xd1Y\xa0\r@\x05\xec\x18\xac(0\x7f\xfbG-\xa0\x03f*\x03BC\n\f \x02ś\x00\xc7\xff\xed\x11\x81cW\x03\x18\x00\xc0\xc6\x0002\x00\r\x04\xbe\x05\xa3F\x8d\xc7\x1b\xb5\xa3m\x06\x1f\xfffe\xd0a\xff\xf6f#6\x8c\x03\x17\xff\xb1\xa0\xc5\xff\xec\x01\x8b\xff\xd8\xd0b\xff\xf6L\xa3D`X\xff\xf01\x80\r\xc0\xc6\x004\x12\xf89A\x84\x00Z(0\x7f\xfb\x10c\x00\x16\x80\xc7\xff\xed\xc4ݭ\x11\xc1c\x9fM\"`a\xff\xfa# P'\x06i>\xe4PI\xe0XF, <\x7f\xfbq\rn\xe8њ\xa0>$\xd2") \ No newline at end of file diff --git a/testdata/fuzz/FuzzDemuxer/49be436174e9321657131246dd602da216b479eb7a247017b104614f11f3e50f b/testdata/fuzz/FuzzDemuxer/49be436174e9321657131246dd602da216b479eb7a247017b104614f11f3e50f new file mode 100644 index 0000000..4b233cf --- /dev/null +++ b/testdata/fuzz/FuzzDemuxer/49be436174e9321657131246dd602da216b479eb7a247017b104614f11f3e50f @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("G@\x00\x10\x00\x00\xb0\r\x00\x01\xc1\x00\x00\x00\x03\xe00\xedc\xab?\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@0\x10\x00\x02\xb0?\x00\x03\xc3\x00\x00\xe01\xf0\x00$\xe01\xf0\x00\x06\xe02\xf0\f\x05\x04AC-4\n\x04eng\x00\x06\xe03\xf0\f\x05\x04AC-4\n\x04spa\x00\x06\xe09\xf0\x06\x05\x04STPP\x92\f\x18H\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffG@3\x10\x00\x00\x01\xbd\x01\x80\x87\x80\x05%\xc7W\n٬@\x01t\xb9]\xe6\x98@\x04\x85\x00.\f \x10W\x80`\x83\x10\xa6@^A\x00\x02\xb4]\xf0\xab\x1d6\b\xc5 \x80lt\xd8;\x05D\x01j\x0f\x80\v\x85\xc0JI5\xc5E\x95\xf8u\x13\xc21\x15ý\xc2b\xb1\xef\xe4p\x8f\x01\xc4\x00\xf8\x7f\fP+3\x89\xe1\xdd\x1d\xcd\xe6Gʗ\x13N\xc7\x03\x87\x95\x13\xba:\xb3\xfb=\xa1~\xa3\xbb\xf2\xe2\xccd\xc1\xda۱_\xe2z\xe4\xa5\xdcݰ=\x97p\xd7^\xb7[\xbc\x1a\xa3n\xd1 C)F`ٔ\xc4|;af\x14\xa0\xde\x0f\x01\x03\x19\xea\x16%2\xfe\fJT\x92p\\P\xb1\x86\xf0'\xc6t\x82\x03\xd9^l\xf0D\t\xf2m-Ǭ\x89\xa5\xce\x0e\xe5\x1a\xb2t\xce\xc1\xb5\xf9\x16\">\xc5#YΙ\xe8\xf8\xf4\xed\x0fU\xb3\xc5\x1d\x95?\xbf\xb2\xa5މ\xf1\xa1@d\xd9\x0eC\xbe\r\x1a\x8cϪC\xb9\xaa\xbf2\x10\xcbJ O\x03\x7fh,>7\x8fΌ\x96\xef\xc5F\x95\xe4 \x85\x15/G\x1aK\x13\xcf\x00B\x1e\xac6\xb5Kk\xdb3TG\x003\x14z\x1c:up\xf5@\xb2[\x9f\xe6\x81up\x90\xff-\xee\xb7\xcc\xe7\x90M\xd6\xf21\xcdz{\xb7Y\xc2AEq<\xe8\x8f\xfb\xd82\x9f\x9a\x9e\xec\xaf|'z\xfdP\xc6\xf2\x8b_\x85Uo\xd7by\x95\xa2ˤ\xde\xdeZӧ\xdet\xa0\x88\xd7O\xfb\x99\xa5\xa6/[g\xbb1\xb2\x9aioc\xd63\xd9v\x1f\xbb\xcegNE\x1aw\xcd\x10\x8c\xa3z\xb2\x00\xe4\x01qv\xa1\x1a\x16o\x89\bh\xa0\xb0\xd0\xd9\xc3L4i\x15\f\x0eI\xbe\x89\x84\xf7\xe9\xc8i\x8eH\xf4\x98\xce\xf8\xab\xae\xfaXV|\xceN\x93\xe4(\xad\x06G\x05Y Date: Tue, 15 Nov 2022 22:40:14 -0800 Subject: [PATCH 7/8] Remove accidental testdata from test --- demuxer_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/demuxer_test.go b/demuxer_test.go index db4daf9..c6f628e 100644 --- a/demuxer_test.go +++ b/demuxer_test.go @@ -196,7 +196,6 @@ func BenchmarkDemuxer_NextData(b *testing.B) { } func FuzzDemuxer(f *testing.F) { - f.Add([]byte("content")) f.Fuzz(func(t *testing.T, b []byte) { r := bytes.NewReader(b) dmx := NewDemuxer(context.Background(), r, DemuxerOptPacketSize(188)) From 58ee51ffaa060500907eed05725baf4f6ee23f70 Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Wed, 16 Nov 2022 00:35:58 -0800 Subject: [PATCH 8/8] Updates based on feedback --- data_pes.go | 2 +- data_psi.go | 41 +++++++++++------------------------------ 2 files changed, 12 insertions(+), 31 deletions(-) diff --git a/data_pes.go b/data_pes.go index 7ca4142..4d0f6b9 100644 --- a/data_pes.go +++ b/data_pes.go @@ -131,7 +131,7 @@ func parsePESData(i *astikit.BytesIterator) (d *PESData, err error) { // Validation if dataEnd < dataStart { - err = fmt.Errorf("astits: parsing PES header failed: data end %d is before data start %d", dataEnd, dataStart) + err = fmt.Errorf("astits: data end %d is before data start %d", dataEnd, dataStart) return } diff --git a/data_psi.go b/data_psi.go index f06a816..f3d8976 100644 --- a/data_psi.go +++ b/data_psi.go @@ -459,45 +459,26 @@ func parsePSISectionSyntaxData(i *astikit.BytesIterator, h *PSISectionHeader, sh func (d *PSIData) toData(firstPacket *Packet, pid uint16) (ds []*DemuxerData) { // Loop through sections for _, s := range d.Sections { + // No data + if s.Syntax == nil || s.Syntax.Data == nil { + continue + } + // Switch on table type switch s.Header.TableID { case PSITableIDNITVariant1, PSITableIDNITVariant2: - var nit *NITData - if s.Syntax != nil { - nit = s.Syntax.Data.NIT - } - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, NIT: nit, PID: pid}) + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, NIT: s.Syntax.Data.NIT, PID: pid}) case PSITableIDPAT: - var pat *PATData - if s.Syntax != nil { - pat = s.Syntax.Data.PAT - } - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PAT: pat, PID: pid}) + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PAT: s.Syntax.Data.PAT, PID: pid}) case PSITableIDPMT: - var pmt *PMTData - if s.Syntax != nil { - pmt = s.Syntax.Data.PMT - } - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, PMT: pmt}) + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, PMT: s.Syntax.Data.PMT}) case PSITableIDSDTVariant1, PSITableIDSDTVariant2: - var sdt *SDTData - if s.Syntax != nil { - sdt = s.Syntax.Data.SDT - } - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, SDT: sdt}) + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, SDT: s.Syntax.Data.SDT}) case PSITableIDTOT: - var tot *TOTData - if s.Syntax != nil { - tot = s.Syntax.Data.TOT - } - ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, TOT: tot}) + ds = append(ds, &DemuxerData{FirstPacket: firstPacket, PID: pid, TOT: s.Syntax.Data.TOT}) } if s.Header.TableID >= PSITableIDEITStart && s.Header.TableID <= PSITableIDEITEnd { - var eit *EITData - if s.Syntax != nil { - eit = s.Syntax.Data.EIT - } - ds = append(ds, &DemuxerData{EIT: eit, FirstPacket: firstPacket, PID: pid}) + ds = append(ds, &DemuxerData{EIT: s.Syntax.Data.EIT, FirstPacket: firstPacket, PID: pid}) } } return