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

index 5f6c64b39b401b43319d1ce443d96d08bbd5564d..bf59d8de5005917a7378b81f11c99c065f6f6206 100644 (file)
@@ -257,7 +257,7 @@ gst_amrnbdec_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);
@@ -280,6 +280,9 @@ gst_amrnbdec_parse (GstAudioDecoder * dec, GstAdapter * adapter,
 
   GST_DEBUG_OBJECT (amrnbdec, "mode %d, block %d", mode, block);
 
+  if (block > size)
+    return GST_FLOW_UNEXPECTED;
+
   *offset = 0;
   *length = block;