diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-02-14 12:33:08 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-02-14 12:53:56 +0100 |
commit | 337f0af9412edb541893158f8dd60c469ba423dd (patch) | |
tree | 834a386067d6856dec904543e91e918afc611860 | |
parent | ae226db5dcd71307a32d3ec505ee6c1db8142265 (diff) | |
download | gstreamer-plugins-bad-337f0af9412edb541893158f8dd60c469ba423dd.tar.gz |
amcaudiodec: Error out if we get an invalid raw audio buffer size
-rw-r--r-- | sys/androidmedia/gstamcaudiodec.c | 14 |
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: { |