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)
committerMichael Smith <msmith@xiph.org>
Thu, 27 Mar 2008 15:26:38 +0000 (15:26 +0000)
Original commit message from CVS:
* gst/gdp/gstgdpdepay.c: (gst_gdp_depay_chain):
Check the body CRC (if set) when depayloading.
Fixes #522401.

ChangeLog
gst/gdp/gstgdpdepay.c

index 5f4556f..a75ef96 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-03-27  Michael Smith <msmith@fluendo.com>
+
+       * gst/gdp/gstgdpdepay.c: (gst_gdp_depay_chain):
+         Check the body CRC (if set) when depayloading.
+         Fixes #522401.
+
 2008-03-24  Tim-Philipp Müller  <tim at centricular dot net>
 
        * ext/pango/gsttextoverlay.c: (gst_text_overlay_class_init):
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),