amrnbdec: _parse should not return OK if not enough data yet
[glsdk/gst-plugins-ugly0-10.git] / 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;