From: Sebastian Dröge Date: Wed, 10 Aug 2011 06:53:05 +0000 (+0200) Subject: omx: Set pAppPrivate of buffers to NULL when deallocating buffers X-Git-Tag: 1.19.3~501^2~949 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8fd4eaae6941fc625597e8e55d02541339bf7066;p=platform%2Fupstream%2Fgstreamer.git omx: Set pAppPrivate of buffers to NULL when deallocating buffers This prevents usage of freed memory later if the OMX component has weird behaviour. --- diff --git a/omx/gstomx.c b/omx/gstomx.c index 61e715e..8b6eea8 100644 --- a/omx/gstomx.c +++ b/omx/gstomx.c @@ -312,8 +312,16 @@ EmptyBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR pAppData, OMX_BUFFERHEADERTYPE * pBuffer) { GstOMXBuffer *buf = pBuffer->pAppPrivate; - GstOMXPort *port = buf->port; - GstOMXComponent *comp = port->comp; + GstOMXPort *port; + GstOMXComponent *comp; + + if (buf == NULL) { + GST_ERROR ("Have unknown or deallocated buffer %p", pBuffer); + return OMX_ErrorNone; + } + + port = buf->port; + comp = port->comp; g_assert (buf->omx_buf == pBuffer); @@ -335,8 +343,16 @@ FillBufferDone (OMX_HANDLETYPE hComponent, OMX_PTR pAppData, OMX_BUFFERHEADERTYPE * pBuffer) { GstOMXBuffer *buf = pBuffer->pAppPrivate; - GstOMXPort *port = buf->port; - GstOMXComponent *comp = port->comp; + GstOMXPort *port; + GstOMXComponent *comp; + + if (buf == NULL) { + GST_ERROR ("Have unknown or deallocated buffer %p", pBuffer); + return OMX_ErrorNone; + } + + port = buf->port; + comp = port->comp; g_assert (buf->omx_buf == pBuffer); @@ -1344,6 +1360,7 @@ gst_omx_port_deallocate_buffers_unlocked (GstOMXPort * port) */ if (buf->omx_buf) { g_assert (buf == buf->omx_buf->pAppPrivate); + buf->omx_buf->pAppPrivate = NULL; tmp = OMX_FreeBuffer (comp->handle, port->index, buf->omx_buf); if (tmp != OMX_ErrorNone) { GST_ERROR_OBJECT (comp->parent,