summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-02-14 12:33:08 +0100
committerSebastian Dröge <sebastian@centricular.com>2014-02-14 12:53:56 +0100
commit337f0af9412edb541893158f8dd60c469ba423dd (patch)
tree834a386067d6856dec904543e91e918afc611860
parentae226db5dcd71307a32d3ec505ee6c1db8142265 (diff)
downloadgstreamer-plugins-bad-337f0af9412edb541893158f8dd60c469ba423dd.tar.gz
amcaudiodec: Error out if we get an invalid raw audio buffer size
-rw-r--r--sys/androidmedia/gstamcaudiodec.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/androidmedia/gstamcaudiodec.c b/sys/androidmedia/gstamcaudiodec.c
index b400de8ec..e8526752f 100644
--- a/sys/androidmedia/gstamcaudiodec.c
+++ b/sys/androidmedia/gstamcaudiodec.c
@@ -630,6 +630,9 @@ retry:
}
}
+ if (buffer_info.size % self->info.bpf != 0)
+ goto invalid_buffer_size;
+
outbuf =
gst_audio_decoder_allocate_output_buffer (GST_AUDIO_DECODER (self),
buffer_info.size);
@@ -779,6 +782,17 @@ invalid_buffer_index:
GST_AUDIO_DECODER_STREAM_UNLOCK (self);
return;
}
+invalid_buffer_size:
+ {
+ GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
+ ("Invalid buffer size %u (bfp %d)", buffer_info.size, self->info.bpf));
+ gst_amc_codec_release_output_buffer (self->codec, idx);
+ gst_pad_push_event (GST_AUDIO_DECODER_SRC_PAD (self), gst_event_new_eos ());
+ gst_pad_pause_task (GST_AUDIO_DECODER_SRC_PAD (self));
+ self->downstream_flow_ret = GST_FLOW_ERROR;
+ GST_AUDIO_DECODER_STREAM_UNLOCK (self);
+ return;
+ }
failed_allocate:
{