diff --git a/ext/amrnb/amrnbdec.c b/ext/amrnb/amrnbdec.c
index 5f6c64b39b401b43319d1ce443d96d08bbd5564d..bf59d8de5005917a7378b81f11c99c065f6f6206 100644 (file)
--- a/ext/amrnb/amrnbdec.c
+++ b/ext/amrnb/amrnbdec.c
gst_audio_decoder_get_parse_state (dec, &sync, &eos);
/* need to peek data to get the size */
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);
return GST_FLOW_ERROR;
data = gst_adapter_peek (adapter, 1);
GST_DEBUG_OBJECT (amrnbdec, "mode %d, block %d", mode, block);
GST_DEBUG_OBJECT (amrnbdec, "mode %d, block %d", mode, block);
+ if (block > size)
+ return GST_FLOW_UNEXPECTED;
+
*offset = 0;
*length = block;
*offset = 0;
*length = block;