From 0102ad6cc8ee58f615803f0b62fba5a4d30796c2 Mon Sep 17 00:00:00 2001 From: Shivaprasad Hongal Date: Mon, 7 Apr 2014 10:15:57 -0700 Subject: libstagefright/omx: Fix CallbackDispatcher dereference in callback. findDispatcher can return NULL. Check for NULL. Change-Id: I07edc427b706dfdeec6a6f90f13d00c8941e77f2 --- media/libstagefright/omx/OMX.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/media/libstagefright/omx/OMX.cpp b/media/libstagefright/omx/OMX.cpp index cb7ab5e..2ef30e3 100644 --- a/media/libstagefright/omx/OMX.cpp +++ b/media/libstagefright/omx/OMX.cpp @@ -463,6 +463,10 @@ OMX_ERRORTYPE OMX::OnEvent( findInstance(node)->onEvent(eEvent, nData1, nData2); sp dispatcher = findDispatcher(node); + if (dispatcher == NULL) { + ALOGW("OnEvent Callback dispatcher NULL, skip post"); + return OMX_ErrorNone; + } // output rendered events are not processed as regular events until they hit the observer if (eEvent == OMX_EventOutputRendered) { @@ -508,7 +512,12 @@ OMX_ERRORTYPE OMX::OnEmptyBufferDone( msg.fenceFd = fenceFd; msg.u.buffer_data.buffer = buffer; - findDispatcher(node)->post(msg); + sp callbackDispatcher = findDispatcher(node); + if (callbackDispatcher != NULL) { + callbackDispatcher->post(msg); + } else { + ALOGW("OnEmptyBufferDone Callback dispatcher NULL, skip post"); + } return OMX_ErrorNone; } @@ -527,7 +536,12 @@ OMX_ERRORTYPE OMX::OnFillBufferDone( msg.u.extended_buffer_data.flags = pBuffer->nFlags; msg.u.extended_buffer_data.timestamp = pBuffer->nTimeStamp; - findDispatcher(node)->post(msg); + sp callbackDispatcher = findDispatcher(node); + if (callbackDispatcher != NULL) { + callbackDispatcher->post(msg); + } else { + ALOGW("OnFillBufferDone Callback dispatcher NULL, skip post"); + } return OMX_ErrorNone; } -- cgit v1.1