fix panic when checking pts = dts on H265 (bluenviron/mediamtx#3754) (#617)

This commit is contained in:
Alessandro Ros
2024-09-11 11:43:15 +02:00
committed by GitHub
parent cb3c527bc1
commit 2023bf1b00
21 changed files with 56 additions and 4 deletions

View File

@@ -87,3 +87,9 @@ func FuzzUnmarshalH264(f *testing.F) {
}
})
}
func FuzzH264PTSEqualsDTS(f *testing.F) {
f.Fuzz(func(t *testing.T, b []byte) {
(&H264{}).PTSEqualsDTS(&rtp.Packet{Payload: b})
})
}

View File

@@ -140,13 +140,13 @@ func (f *H265) PTSEqualsDTS(pkt *rtp.Packet) bool {
return true
case h265.NALUType_AggregationUnit:
payload := pkt.Payload[2:]
for {
if len(payload) < 2 {
if len(pkt.Payload) < 4 {
return false
}
payload := pkt.Payload[2:]
for {
size := uint16(payload[0])<<8 | uint16(payload[1])
payload = payload[2:]
@@ -167,6 +167,10 @@ func (f *H265) PTSEqualsDTS(pkt *rtp.Packet) bool {
if len(payload) == 0 {
break
}
if len(payload) < 2 {
return false
}
}
case h265.NALUType_FragmentationUnit:

View File

@@ -104,3 +104,9 @@ func FuzzUnmarshalH265(f *testing.F) {
}
})
}
func FuzzH265PTSEqualsDTS(f *testing.F) {
f.Fuzz(func(t *testing.T, b []byte) {
(&H265{}).PTSEqualsDTS(&rtp.Packet{Payload: b})
})
}

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("800")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("\xbc")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("8")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("\xbc\xa8")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("\xbc0")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("8\x00\x010")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("8\x00\x01%")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("A")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("b0\xd3")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("a0")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("a0\x00\x040000")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("a")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("b00")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("a0\x00\x04A000")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("a000")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("a0\x00\x0100")

View File

@@ -0,0 +1,2 @@
go test fuzz v1
[]byte("b0")