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)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 17 Jan 2012 10:57:21 +0000 (11:57 +0100)
ext/amrnb/amrnbdec.c

index 5f6c64b..bf59d8d 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;