Loading include/media/IOMX.h +6 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,12 @@ public: virtual status_t onTransact( uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags = 0); protected: // check if the codec is secure. virtual bool isSecure(IOMX::node_id node) { return false; } }; class BnOMXObserver : public BnInterface<IOMXObserver> { Loading media/libmedia/IOMX.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -1006,6 +1006,12 @@ status_t BnOMX::onTransact( node_id node = (void*)data.readIntPtr(); OMX_U32 port_index = data.readInt32(); if (!isSecure(node) || port_index != 0 /* kPortIndexInput */) { ALOGE("b/24310423"); reply->writeInt32(INVALID_OPERATION); return NO_ERROR; } size_t size = data.readInt32(); buffer_id buffer; Loading media/libstagefright/include/OMX.h +2 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,8 @@ public: virtual void binderDied(const wp<IBinder> &the_late_who); virtual bool isSecure(IOMX::node_id node); OMX_ERRORTYPE OnEvent( node_id node, OMX_IN OMX_EVENTTYPE eEvent, Loading media/libstagefright/include/OMXNodeInstance.h +6 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ struct OMXNodeInstance { #endif OMXNodeInstance( OMX *owner, const sp<IOMXObserver> &observer); OMX *owner, const sp<IOMXObserver> &observer, const char *name); void setHandle(OMX::node_id node_id, OMX_HANDLETYPE handle); Loading Loading @@ -137,6 +137,10 @@ struct OMXNodeInstance { const void *data, size_t size); bool isSecure() const { return mIsSecure; } void onMessage(const omx_message &msg); void onObserverDied(OMXMaster *master); void onGetHandleFailed(); Loading @@ -155,6 +159,7 @@ private: OMXNodeInstanceBufferHandler *mMtkBufferHandler; #endif bool mDying; bool mIsSecure; // Lock only covers mGraphicBufferSource. We can't always use mLock // because of rare instances where we'd end up locking it recursively. Loading media/libstagefright/omx/OMX.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -185,6 +185,11 @@ void OMX::binderDied(const wp<IBinder> &the_late_who) { instance->onObserverDied(mMaster); } bool OMX::isSecure(node_id node) { OMXNodeInstance *instance = findInstance(node); return (instance == NULL ? false : instance->isSecure()); } bool OMX::livesLocally(node_id node, pid_t pid) { return pid == getpid(); } Loading Loading @@ -223,7 +228,7 @@ status_t OMX::allocateNode( *node = 0; OMXNodeInstance *instance = new OMXNodeInstance(this, observer); OMXNodeInstance *instance = new OMXNodeInstance(this, observer, name); OMX_COMPONENTTYPE *handle; OMX_ERRORTYPE err = mMaster->makeComponentInstance( Loading Loading
include/media/IOMX.h +6 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,12 @@ public: virtual status_t onTransact( uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags = 0); protected: // check if the codec is secure. virtual bool isSecure(IOMX::node_id node) { return false; } }; class BnOMXObserver : public BnInterface<IOMXObserver> { Loading
media/libmedia/IOMX.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -1006,6 +1006,12 @@ status_t BnOMX::onTransact( node_id node = (void*)data.readIntPtr(); OMX_U32 port_index = data.readInt32(); if (!isSecure(node) || port_index != 0 /* kPortIndexInput */) { ALOGE("b/24310423"); reply->writeInt32(INVALID_OPERATION); return NO_ERROR; } size_t size = data.readInt32(); buffer_id buffer; Loading
media/libstagefright/include/OMX.h +2 −0 Original line number Diff line number Diff line Loading @@ -146,6 +146,8 @@ public: virtual void binderDied(const wp<IBinder> &the_late_who); virtual bool isSecure(IOMX::node_id node); OMX_ERRORTYPE OnEvent( node_id node, OMX_IN OMX_EVENTTYPE eEvent, Loading
media/libstagefright/include/OMXNodeInstance.h +6 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ struct OMXNodeInstance { #endif OMXNodeInstance( OMX *owner, const sp<IOMXObserver> &observer); OMX *owner, const sp<IOMXObserver> &observer, const char *name); void setHandle(OMX::node_id node_id, OMX_HANDLETYPE handle); Loading Loading @@ -137,6 +137,10 @@ struct OMXNodeInstance { const void *data, size_t size); bool isSecure() const { return mIsSecure; } void onMessage(const omx_message &msg); void onObserverDied(OMXMaster *master); void onGetHandleFailed(); Loading @@ -155,6 +159,7 @@ private: OMXNodeInstanceBufferHandler *mMtkBufferHandler; #endif bool mDying; bool mIsSecure; // Lock only covers mGraphicBufferSource. We can't always use mLock // because of rare instances where we'd end up locking it recursively. Loading
media/libstagefright/omx/OMX.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -185,6 +185,11 @@ void OMX::binderDied(const wp<IBinder> &the_late_who) { instance->onObserverDied(mMaster); } bool OMX::isSecure(node_id node) { OMXNodeInstance *instance = findInstance(node); return (instance == NULL ? false : instance->isSecure()); } bool OMX::livesLocally(node_id node, pid_t pid) { return pid == getpid(); } Loading Loading @@ -223,7 +228,7 @@ status_t OMX::allocateNode( *node = 0; OMXNodeInstance *instance = new OMXNodeInstance(this, observer); OMXNodeInstance *instance = new OMXNodeInstance(this, observer, name); OMX_COMPONENTTYPE *handle; OMX_ERRORTYPE err = mMaster->makeComponentInstance( Loading