From 13278fbcf5f5d76946427c0b2a5358550a78b86e Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Fri, 21 Sep 2018 20:22:43 +0000 Subject: [PATCH] rtph264pay: Protect against use of reserved NAL types Don't allow external encoder to use one of the reserved NAL type implicated in NAL aggreation. These out-of-spec NAL types, if passed from the outside world will lead to an invalid RTP payload being created. --- gst/rtp/gstrtph264pay.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gst/rtp/gstrtph264pay.c b/gst/rtp/gstrtph264pay.c index ee46bab77..1105dc5d1 100644 --- a/gst/rtp/gstrtph264pay.c +++ b/gst/rtp/gstrtph264pay.c @@ -806,6 +806,20 @@ gst_rtp_h264_pay_payload_nal (GstRTPBasePayload * basepayload, gst_buffer_extract (paybuf, 0, &nalHeader, 1); nalType = nalHeader & 0x1f; + /* These payload type are reserved for STAP-A, STAP-B, MTAP16, and MTAP24 + * as internally used NAL types */ + switch (nalType) { + case 24: + case 25: + case 26: + case 27: + GST_WARNING_OBJECT (rtph264pay, "Ignoring reserved NAL TYPE=%d", nalType); + gst_buffer_unref (paybuf); + return GST_FLOW_OK; + default: + break; + } + GST_DEBUG_OBJECT (rtph264pay, "Processing Buffer with NAL TYPE=%d", nalType); /* should set src caps before pushing stuff, -- GitLab