diff --git a/pkg/format/rtpav1/decoder_test.go b/pkg/format/rtpav1/decoder_test.go index 4c43b263..a16bee8d 100644 --- a/pkg/format/rtpav1/decoder_test.go +++ b/pkg/format/rtpav1/decoder_test.go @@ -33,7 +33,7 @@ func TestDecode(t *testing.T) { } } -func TestDecoderErrorLimit(t *testing.T) { +func TestDecoderErrorOBUCount(t *testing.T) { d := &Decoder{} err := d.Init() require.NoError(t, err) diff --git a/pkg/format/rtph264/decoder_test.go b/pkg/format/rtph264/decoder_test.go index b4dd2b99..93a79016 100644 --- a/pkg/format/rtph264/decoder_test.go +++ b/pkg/format/rtph264/decoder_test.go @@ -222,7 +222,43 @@ func TestDecodeAccessUnit(t *testing.T) { require.Equal(t, [][]byte{{0x01, 0x02}, {0x01, 0x02}}, nalus) } -func TestDecoderErrorLimit(t *testing.T) { +func TestDecoderErrorNALUSize(t *testing.T) { + d := &Decoder{} + err := d.Init() + require.NoError(t, err) + + size := 0 + i := uint16(0) + + for size < h264.MaxAccessUnitSize { + flags := byte(0) + if size == 0 { + flags = 0b10000000 + } + + _, err = d.Decode(&rtp.Packet{ + Header: rtp.Header{ + Version: 2, + Marker: false, + PayloadType: 96, + SequenceNumber: 17645 + i, + Timestamp: 2289527317, + SSRC: 0x9dbb7812, + }, + Payload: append( + []byte{byte(h264.NALUTypeFUA), flags}, + bytes.Repeat([]byte{1, 2, 3, 4}, 1400/4)..., + ), + }) + + size += 1400 + i++ + } + + require.EqualError(t, err, "NALU size (8388801) is too big, maximum is 8388608") +} + +func TestDecoderErrorNALUCount(t *testing.T) { d := &Decoder{} err := d.Init() require.NoError(t, err) diff --git a/pkg/format/rtph265/decoder_test.go b/pkg/format/rtph265/decoder_test.go index c6599328..951b860f 100644 --- a/pkg/format/rtph265/decoder_test.go +++ b/pkg/format/rtph265/decoder_test.go @@ -1,6 +1,7 @@ package rtph265 import ( + "bytes" "errors" "testing" @@ -39,7 +40,43 @@ func TestDecode(t *testing.T) { } } -func TestDecoderErrorLimit(t *testing.T) { +func TestDecoderErrorNALUSize(t *testing.T) { + d := &Decoder{} + err := d.Init() + require.NoError(t, err) + + size := 0 + i := uint16(0) + + for size < h265.MaxAccessUnitSize { + flags := byte(0) + if size == 0 { + flags = 0b10000000 + } + + _, err = d.Decode(&rtp.Packet{ + Header: rtp.Header{ + Version: 2, + Marker: false, + PayloadType: 96, + SequenceNumber: 17645 + i, + Timestamp: 2289527317, + SSRC: 0x9dbb7812, + }, + Payload: append( + []byte{byte(h265.NALUType_FragmentationUnit << 1), 0, flags}, + bytes.Repeat([]byte{1, 2, 3, 4}, 1400/4)..., + ), + }) + + size += 1400 + i++ + } + + require.EqualError(t, err, "NALU size (8388802) is too big, maximum is 8388608") +} + +func TestDecoderErrorNALUCount(t *testing.T) { d := &Decoder{} err := d.Init() require.NoError(t, err)