gst/gdp/gstgdpdepay.c: Check the body CRC (if set) when depayloading.
authorMichael Smith <msmith@xiph.org>
Thu, 27 Mar 2008 15:26:38 +0000 (15:26 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Tue, 11 Sep 2012 00:54:32 +0000 (01:54 +0100)
Original commit message from CVS:
* gst/gdp/gstgdpdepay.c: (gst_gdp_depay_chain):
Check the body CRC (if set) when depayloading.
Fixes #522401.

gst/gdp/gstgdpdepay.c

index 16f6a76..1341b37 100644 (file)
@@ -287,6 +287,12 @@ gst_gdp_depay_chain (GstPad * pad, GstBuffer * buffer)
         } else {
           goto wrong_type;
         }
+
+        if (!gst_dp_validate_payload (GST_DP_HEADER_LENGTH, this->header,
+                gst_adapter_peek (this->adapter, this->payload_length))) {
+          goto payload_validate_error;
+        }
+
         break;
       }
       case GST_GDP_DEPAY_STATE_BUFFER:
@@ -392,6 +398,13 @@ header_validate_error:
     ret = GST_FLOW_ERROR;
     goto done;
   }
+payload_validate_error:
+  {
+    GST_ELEMENT_ERROR (this, STREAM, DECODE, (NULL),
+        ("GDP packet payload does not validate"));
+    ret = GST_FLOW_ERROR;
+    goto done;
+  }
 wrong_type:
   {
     GST_ELEMENT_ERROR (this, STREAM, DECODE, (NULL),