summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-01-17 11:55:14 +0100
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-01-17 11:57:21 +0100
commit1d71315dc910228e6ca21c26367d8f8aecf2e2d4 (patch)
tree746940a1f60a5f9bb17717f904300b4387d3a1c6
parent683f5eeae7b830e4e4b790f3817ff6b8ce517b1c (diff)
amrnbdec: _parse should not return OK if not enough data yet
-rw-r--r--ext/amrnb/amrnbdec.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/amrnb/amrnbdec.c b/ext/amrnb/amrnbdec.c
index 5f6c64b3..bf59d8de 100644
--- a/ext/amrnb/amrnbdec.c
+++ b/ext/amrnb/amrnbdec.c
@@ -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;