Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bda0068 authored by Robert Shih's avatar Robert Shih Committed by Android (Google) Code Review
Browse files

Merge "DrmHal: remove permission check"

parents afb3b827 6152d7c7
Loading
Loading
Loading
Loading
+4 −20
Original line number Diff line number Diff line
@@ -20,8 +20,7 @@

#include <utils/Log.h>

#include <binder/IPCThreadState.h>
#include <binder/IServiceManager.h>
#include <android/binder_manager.h>

#include <aidl/android/media/BnResourceManagerClient.h>
#include <android/hardware/drm/1.2/types.h>
@@ -99,17 +98,6 @@ namespace android {

#define INIT_CHECK() {if (mInitCheck != OK) return mInitCheck;}

static inline int getCallingPid() {
    return IPCThreadState::self()->getCallingPid();
}

static bool checkPermission(const char* permissionString) {
    if (getpid() == IPCThreadState::self()->getCallingPid()) return true;
    bool ok = checkCallingPermission(String16(permissionString));
    if (!ok) ALOGE("Request requires %s", permissionString);
    return ok;
}

static const Vector<uint8_t> toVector(const hidl_vec<uint8_t> &vec) {
    Vector<uint8_t> vector;
    vector.appendArray(vec.data(), vec.size());
@@ -454,7 +442,7 @@ sp<IDrmPlugin> DrmHal::makeDrmPlugin(const sp<IDrmFactory>& factory,
        const uint8_t uuid[16], const String8& appPackageName) {
    mAppPackageName = appPackageName;
    mMetrics.SetAppPackageName(appPackageName);
    mMetrics.SetAppUid(IPCThreadState::self()->getCallingUid());
    mMetrics.SetAppUid(AIBinder_getCallingUid());

    sp<IDrmPlugin> plugin;
    Return<void> hResult = factory->createPlugin(uuid, appPackageName.string(),
@@ -751,7 +739,7 @@ status_t DrmHal::openSession(DrmPlugin::SecurityLevel level,
            // reclaimSession may call back to closeSession, since mLock is
            // shared between Drm instances, we should unlock here to avoid
            // deadlock.
            retry = DrmSessionManager::Instance()->reclaimSession(getCallingPid());
            retry = DrmSessionManager::Instance()->reclaimSession(AIBinder_getCallingPid());
            mLock.lock();
        } else {
            retry = false;
@@ -760,7 +748,7 @@ status_t DrmHal::openSession(DrmPlugin::SecurityLevel level,

    if (err == OK) {
        std::shared_ptr<DrmSessionClient> client(new DrmSessionClient(this, sessionId));
        DrmSessionManager::Instance()->addSession(getCallingPid(),
        DrmSessionManager::Instance()->addSession(AIBinder_getCallingPid(),
                std::static_pointer_cast<IResourceManagerClient>(client), sessionId);
        mOpenSessions.push_back(client);
        mMetrics.SetSessionStart(sessionId);
@@ -1543,10 +1531,6 @@ status_t DrmHal::signRSA(Vector<uint8_t> const &sessionId,
    Mutex::Autolock autoLock(mLock);
    INIT_CHECK();

    if (!checkPermission("android.permission.ACCESS_DRM_CERTIFICATES")) {
        return -EPERM;
    }

    DrmSessionManager::Instance()->useSession(sessionId);

    status_t err = UNKNOWN_ERROR;