From: Sebastian Dröge Date: Fri, 23 Sep 2011 13:53:49 +0000 (+0200) Subject: omxvideodec: Add some more checks for OMX buffer sizes X-Git-Tag: 1.19.3~501^2~909 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5659bd3b4f807a8038e213129690a053a3354321;p=platform%2Fupstream%2Fgstreamer.git omxvideodec: Add some more checks for OMX buffer sizes --- diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c index 103bfe1..cfa9c85 100644 --- a/omx/gstomxvideodec.c +++ b/omx/gstomxvideodec.c @@ -1129,10 +1129,14 @@ gst_omx_video_dec_handle_frame (GstBaseVideoDecoder * decoder, g_assert (acq_ret == GST_OMX_ACQUIRE_BUFFER_OK && buf != NULL); + if (buf->omx_buf->nAllocLen - buf->omx_buf->nOffset <= 0) + goto full_buffer; + if (self->codec_data) { codec_data = self->codec_data; - if (buf->omx_buf->nAllocLen < GST_BUFFER_SIZE (codec_data)) { + if (buf->omx_buf->nAllocLen - buf->omx_buf->nOffset < + GST_BUFFER_SIZE (codec_data)) { gst_omx_port_release_buffer (self->in_port, buf); goto too_large_codec_data; } @@ -1205,6 +1209,15 @@ gst_omx_video_dec_handle_frame (GstBaseVideoDecoder * decoder, return GST_FLOW_OK; +full_buffer: + { + GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL), + ("Got OpenMAX buffer with no free space (%p, %u/%u)", buf, + buf->omx_buf->nOffset, buf->omx_buf->nAllocLen)); + gst_omx_port_release_buffer (self->in_port, buf); + return GST_FLOW_ERROR; + } + too_large_codec_data: { GST_ELEMENT_ERROR (self, STREAM, FORMAT, (NULL),