amrwbdec: _parse should not return OK if not enough data yet
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 17 Jan 2012 10:55:59 +0000 (11:55 +0100)
committerNikhil Devshatwar <a0132237@ti.com>
Fri, 17 May 2013 09:40:55 +0000 (15:10 +0530)
ext/amrwbdec/amrwbdec.c

index e056a7a9df2bb747c53e1bd1fdad83163bb32010..53358661d3d7dd02541bb8a89728ec721b90d4f2 100644 (file)
@@ -183,7 +183,7 @@ gst_amrwbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
   gst_audio_decoder_get_parse_state (dec, &sync, &eos);
 
   /* need to peek data to get the size */
-  if (gst_adapter_available (adapter) < 1)
+  if (size < 1)
     return GST_FLOW_ERROR;
 
   data = gst_adapter_peek (adapter, 1);
@@ -193,6 +193,8 @@ gst_amrwbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
   GST_DEBUG_OBJECT (amrwbdec, "mode %d, block %d", mode, block);
 
   if (block) {
+    if (block > size)
+      return GST_FLOW_UNEXPECTED;
     *offset = 0;
     *length = block;
   } else {