rtph264pay: Protect against use of reserved NAL types
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Fri, 21 Sep 2018 20:22:43 +0000 (20:22 +0000)
committerNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 18 Dec 2018 18:30:05 +0000 (13:30 -0500)
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

index ee46bab..1105dc5 100644 (file)
@@ -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,