gst-plugins-bad: celt: a bit more error checking on header parsing

Sebastian Dröge slomo at kemper.freedesktop.org
Mon Sep 19 00:40:25 PDT 2011


Module: gst-plugins-bad
Branch: master
Commit: fe0a2ec885226b2fa004b8d30514ce0f81ed3e28
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=fe0a2ec885226b2fa004b8d30514ce0f81ed3e28

Author: Vincent Penquerc'h <vincent.penquerch at collabora.co.uk>
Date:   Wed Sep 14 20:22:42 2011 +0100

celt: a bit more error checking on header parsing

https://bugzilla.gnome.org/show_bug.cgi?id=659087

---

 ext/celt/gstceltdec.c |    5 ++++-
 ext/celt/gstceltenc.c |   13 ++++++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ext/celt/gstceltdec.c b/ext/celt/gstceltdec.c
index bb4acdf..6d3d943 100644
--- a/ext/celt/gstceltdec.c
+++ b/ext/celt/gstceltdec.c
@@ -560,8 +560,11 @@ celt_dec_chain_parse_header (GstCeltDec * dec, GstBuffer * buf)
   gint error = CELT_OK;
 
   /* get the header */
-  celt_header_from_packet ((const unsigned char *) GST_BUFFER_DATA (buf),
+  error =
+      celt_header_from_packet ((const unsigned char *) GST_BUFFER_DATA (buf),
       GST_BUFFER_SIZE (buf), &dec->header);
+  if (error < 0)
+    goto invalid_header;
 
   if (memcmp (dec->header.codec_id, "CELT    ", 8) != 0)
     goto invalid_header;
diff --git a/ext/celt/gstceltenc.c b/ext/celt/gstceltenc.c
index 2b09238..9e6944d 100644
--- a/ext/celt/gstceltenc.c
+++ b/ext/celt/gstceltenc.c
@@ -914,7 +914,11 @@ gst_celt_enc_chain (GstPad * pad, GstBuffer * buf)
     unsigned char *data = g_malloc (header_size);
 
     /* create header buffer */
-    celt_header_to_packet (&enc->header, data, header_size);
+    int error = celt_header_to_packet (&enc->header, data, header_size);
+    if (error < 0) {
+      g_free (data);
+      goto no_header;
+    }
     buf1 = gst_celt_enc_buffer_from_data (enc, data, header_size, 0);
 
     /* create comment buffer */
@@ -1047,6 +1051,13 @@ not_setup:
     goto done;
   }
 
+no_header:
+  {
+    GST_ELEMENT_ERROR (enc, STREAM, ENCODE, (NULL),
+        ("Failed to encode header"));
+    ret = GST_FLOW_ERROR;
+    goto done;
+  }
 }
 
 



More information about the gstreamer-commits mailing list