From aeeeedd7c7bd11f05d3e79464c06dff54b1c7563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 14 Feb 2014 12:33:08 +0100 Subject: [PATCH] amcaudiodec: Error out if we get an invalid raw audio buffer size --- sys/androidmedia/gstamcaudiodec.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sys/androidmedia/gstamcaudiodec.c b/sys/androidmedia/gstamcaudiodec.c index b400de8ecf..e8526752f4 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: {