Skip to content

Commit

Permalink
Handle panics and infinite loops found via fuzzer (#43)
Browse files Browse the repository at this point in the history
* Create a fuzzer for the demuxer

* New fuzzer testdata

* Handle corrupted PES

* Handle infinite loop in decoding descriptor

* Handle corrupted PSI

* Add a couple more test cases

* Remove accidental testdata from test

* Updates based on feedback
  • Loading branch information
eric authored Nov 16, 2022
1 parent b2efeb7 commit 055f96f
Show file tree
Hide file tree
Showing 15 changed files with 52 additions and 5 deletions.
6 changes: 6 additions & 0 deletions data_pes.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@ func parsePESData(i *astikit.BytesIterator) (d *PESData, err error) {
return
}

// Validation
if dataEnd < dataStart {
err = fmt.Errorf("astits: data end %d is before data start %d", dataEnd, dataStart)
return
}

// Seek to data
i.Seek(dataStart)

Expand Down
5 changes: 5 additions & 0 deletions data_psi.go
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,11 @@ 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:
Expand Down
13 changes: 13 additions & 0 deletions demuxer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,3 +194,16 @@ func BenchmarkDemuxer_NextData(b *testing.B) {
}
}
}

func FuzzDemuxer(f *testing.F) {
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
}
}
})
}
11 changes: 6 additions & 5 deletions descriptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{
Expand Down
Original file line number Diff line number Diff line change
@@ -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")
Original file line number Diff line number Diff line change
@@ -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")
Original file line number Diff line number Diff line change
@@ -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\f<g\x19L\xd2\xf2\x1a*J\xbb\x89\x1cG\x003\x1131B\x9aLTAٯN\xb8\xfe9\x15b2ස\xe7\xf6Diqj*\xa5,e@\xbe\x1c\x94\x03O\xa2j\x0e\x04\x19!\xfadVp$\x02\xc2hutQ\x02\xd8\xca/\xc5\xe2\xa3\xed\x03\xfaz{;\xe7\x84*\x1b\xae\r\xf4\xf8Z\x9c\x81\xc7\xf6fI+\xe5\a\xe6\aVq\xbc\x80\xe9\x00:\v[\xe0\xa5\x16\xd5y3\xb9Y\x9aluߝ(\xf0\xf6+\x92LJ\xe3Nl\xef\x8a\xfcՃ\x06\x1cbms\xf7\xaf-\xc7$\xff\xed\xf0\x9d ¤\x93td=\\\\\x9ct\xab\x1a\xb9\x80\xa9$5\x0f\xde<\xaf\xd9Ȉ\xa8v\xb9L\xea\xe8\xae\xcb\xf9\x0f\xedޛ\xa0\x89ho\xc0\xf4\x9f?\x9amG\x0032\xa1\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\fD\xbd\xb4\xc1\xf0\x87\xc3@\a\x80\a\xfe\x16\xa3\x7f\xe1j5P\x00jG@3\x13\x00\x00\x01\xbd\x01t\x87\x80\x05%\xc7W\"O\xac@\x01h\xb9nf\x98@\x04\x90\x00.\f \x10T\x80`\x83\x10\xa7\xd0^A\x00\x02\x9c_]i\xa6\xc3XD\x1a\f W\x80\xc0t\xcb&\x0fr\x94*\xee\xe2>JT\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<V\x7f\xff)\xff\xedN9\xa0\x83\xa146\xd0\xd0\xf6\x86\xd4\xc1\xf5\xd0\x01G\x0035\xad\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\xe0\x00s4s5\xb6\xc0\x00jG@2\x10\x00\x00\x01\xbd\x01\x9f\x87\x80\x05%\xc7W\n٬@\x01\x93\xb9^\xe6\x98\xc0\x04\f\x00/\x83\b\x04\x17\xc0`\x83\x10\xa5\xb0^A\x00\x02ꂀ\x1duN\f\xc3D\b\xaa\xef\x0e~\x10B\xa5\x02\xd2U\x93\xea3\x05\xed\xda$X\xb3\xf5K\xcf\x15+j\xf5\x85\xf9t\x9f+\x82C\xea1Oc*\x9f\xeew\x91\x8e\xf5e\xc1\xe5\xc9\b\xe29\x8dƊ\x19[\x99\xa6\xb9\x18\xe6\xbck}W~\xed\xbd\x87\xad\x82\xcf\x14Y\xf6g\x0e\xda^\xc10\xce\xea\x14{\x9a^TWv-\r\xcb*C}\v%\xcdfC܍\x8d\xf4\x8cOY\xe4\xc4\xd7l\x8bYx\x8e\xe7\xf8T\x19\x14~\xa2\x1cÞC\xf0^E\xf2=\x0eG\x002\x11\r\x03x\xff\xe7\xfd\x9b\t\x18m\x13\xbcg\x16\"\x11\x8eA1Q\xf0\x0e\x05\x84\xac\x05\xb7 \x02`*A\xdaj\xf8~\xb6ц\xff]]\x05\xf9a\xf7P\xee&\"\x1b`a^D˩\x10\x941\xd3%\xdd\vi\xc0_\xe0<Rԕ:\xf1s\xb4+\xfe(^)\xddM\xdb\xe8um\xf7h~\xf2\x99\t\x10\b\x98\rx䦫\xe0\xec\xff\x91\xe4X\xbd\xf9!+\xded\xa8\x90t#\xf4!&\x81 (\xc7\xff\x0e\x90\f\x8e\x1b\xf9\x9a\x98m\xa6\x9c(\xd5UƑO\x13\xaef@\x04(9\xdf\xf7\xa2\xee\xb4;\xfe\xf5}\x1f\xe3\xff\xfb\x99Ƨ1\xb3\x9fQ\xe4\x0f\xfco\xfc\x17]\xbe\xbd\xf5\xe1\x82\xc7ld")
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("G \x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("G \x00X\x00X0\x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
Loading

0 comments on commit 055f96f

Please sign in to comment.