From abef977ad5bc77a6d20df9f44ce1319b074e6c73 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Thu, 27 Mar 2025 11:38:28 +0100 Subject: [PATCH] improve NALU size limit errors (#741) --- pkg/format/rtpav1/decoder.go | 5 +++-- pkg/format/rtpav1/decoder_test.go | 2 +- pkg/format/rtph264/decoder.go | 5 +++-- pkg/format/rtph264/decoder_test.go | 2 +- pkg/format/rtph265/decoder.go | 5 +++-- pkg/format/rtph265/decoder_test.go | 2 +- 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/format/rtpav1/decoder.go b/pkg/format/rtpav1/decoder.go index 11791d7b..fb24dd2e 100644 --- a/pkg/format/rtpav1/decoder.go +++ b/pkg/format/rtpav1/decoder.go @@ -143,11 +143,12 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, error) { l := len(obus) if (d.frameBufferLen + l) > av1.MaxOBUsPerTemporalUnit { + errCount := d.frameBufferLen + l d.frameBuffer = nil d.frameBufferLen = 0 d.frameBufferSize = 0 - return nil, fmt.Errorf("OBU count exceeds maximum allowed (%d)", - av1.MaxOBUsPerTemporalUnit) + return nil, fmt.Errorf("OBU count (%d) exceeds maximum allowed (%d)", + errCount, av1.MaxOBUsPerTemporalUnit) } addSize := 0 diff --git a/pkg/format/rtpav1/decoder_test.go b/pkg/format/rtpav1/decoder_test.go index 5e1b722d..4c43b263 100644 --- a/pkg/format/rtpav1/decoder_test.go +++ b/pkg/format/rtpav1/decoder_test.go @@ -52,7 +52,7 @@ func TestDecoderErrorLimit(t *testing.T) { }) } - require.EqualError(t, err, "OBU count exceeds maximum allowed (10)") + require.EqualError(t, err, "OBU count (11) exceeds maximum allowed (10)") } func TestDecodeErrorMissingPacket(t *testing.T) { diff --git a/pkg/format/rtph264/decoder.go b/pkg/format/rtph264/decoder.go index f5a37e61..8ccc781b 100644 --- a/pkg/format/rtph264/decoder.go +++ b/pkg/format/rtph264/decoder.go @@ -215,11 +215,12 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, error) { l := len(nalus) if (d.frameBufferLen + l) > h264.MaxNALUsPerAccessUnit { + errCount := d.frameBufferLen + l d.frameBuffer = nil d.frameBufferLen = 0 d.frameBufferSize = 0 - return nil, fmt.Errorf("NALU count exceeds maximum allowed (%d)", - h264.MaxNALUsPerAccessUnit) + return nil, fmt.Errorf("NALU count (%d) exceeds maximum allowed (%d)", + errCount, h264.MaxNALUsPerAccessUnit) } addSize := 0 diff --git a/pkg/format/rtph264/decoder_test.go b/pkg/format/rtph264/decoder_test.go index b092d205..b4dd2b99 100644 --- a/pkg/format/rtph264/decoder_test.go +++ b/pkg/format/rtph264/decoder_test.go @@ -241,7 +241,7 @@ func TestDecoderErrorLimit(t *testing.T) { }) } - require.EqualError(t, err, "NALU count exceeds maximum allowed (25)") + require.EqualError(t, err, "NALU count (26) exceeds maximum allowed (25)") } func TestDecodeErrorMissingPacket(t *testing.T) { diff --git a/pkg/format/rtph265/decoder.go b/pkg/format/rtph265/decoder.go index 781f3ca1..4777a06c 100644 --- a/pkg/format/rtph265/decoder.go +++ b/pkg/format/rtph265/decoder.go @@ -174,11 +174,12 @@ func (d *Decoder) Decode(pkt *rtp.Packet) ([][]byte, error) { l := len(nalus) if (d.frameBufferLen + l) > h265.MaxNALUsPerAccessUnit { + errCount := d.frameBufferLen + l d.frameBuffer = nil d.frameBufferLen = 0 d.frameBufferSize = 0 - return nil, fmt.Errorf("NALU count exceeds maximum allowed (%d)", - h265.MaxNALUsPerAccessUnit) + return nil, fmt.Errorf("NALU count (%d) exceeds maximum allowed (%d)", + errCount, h265.MaxNALUsPerAccessUnit) } addSize := 0 diff --git a/pkg/format/rtph265/decoder_test.go b/pkg/format/rtph265/decoder_test.go index dcb50f55..c6599328 100644 --- a/pkg/format/rtph265/decoder_test.go +++ b/pkg/format/rtph265/decoder_test.go @@ -58,7 +58,7 @@ func TestDecoderErrorLimit(t *testing.T) { }) } - require.EqualError(t, err, "NALU count exceeds maximum allowed (21)") + require.EqualError(t, err, "NALU count (22) exceeds maximum allowed (21)") } func TestDecodeErrorMissingPacket(t *testing.T) {