Loading include/media/IOMX.h +6 −0 Original line number Diff line number Diff line Loading @@ -203,6 +203,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 @@ -810,6 +810,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 @@ -126,6 +126,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 @@ -31,7 +31,7 @@ struct GraphicBufferSource; struct OMXNodeInstance { 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 @@ -110,6 +110,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 @@ -125,6 +129,7 @@ private: OMX_HANDLETYPE mHandle; sp<IOMXObserver> mObserver; 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 @@ -203,6 +203,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 @@ -810,6 +810,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 @@ -126,6 +126,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 @@ -31,7 +31,7 @@ struct GraphicBufferSource; struct OMXNodeInstance { 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 @@ -110,6 +110,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 @@ -125,6 +129,7 @@ private: OMX_HANDLETYPE mHandle; sp<IOMXObserver> mObserver; 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