Loading include/media/IOMX.h +6 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,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 @@ -963,6 +963,12 @@ status_t BnOMX::onTransact( node_id node = (node_id)data.readInt32(); 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.readInt64(); buffer_id buffer; Loading media/libstagefright/include/OMX.h +2 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,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 +5 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,10 @@ struct OMXNodeInstance { const void *data, size_t size); bool isSecure() const { return mIsSecure; } // handles messages and removes them from the list void onMessages(std::list<omx_message> &messages); void onMessage(const omx_message &msg); Loading @@ -142,6 +146,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 +5 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,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
include/media/IOMX.h +6 −0 Original line number Diff line number Diff line Loading @@ -249,6 +249,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 @@ -963,6 +963,12 @@ status_t BnOMX::onTransact( node_id node = (node_id)data.readInt32(); 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.readInt64(); buffer_id buffer; Loading
media/libstagefright/include/OMX.h +2 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,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 +5 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,10 @@ struct OMXNodeInstance { const void *data, size_t size); bool isSecure() const { return mIsSecure; } // handles messages and removes them from the list void onMessages(std::list<omx_message> &messages); void onMessage(const omx_message &msg); Loading @@ -142,6 +146,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 +5 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,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