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

Commit 58ad475e authored by Jeff Tinker's avatar Jeff Tinker
Browse files

Fix hidl return checks

Some drm HAL methods were not properly checking
their hidl Return<Status> values which would cause
aborts in some cases. This CL adds checks as needed

Test: GTS media tests
bug:73500808
Change-Id: I47ae0f82d4e614b1e78923ed48fbe4c024df5d71
parent 5df26c9b
Loading
Loading
Loading
Loading
+21 −13
Original line number Diff line number Diff line
@@ -771,7 +771,8 @@ status_t DrmHal::removeKeys(Vector<uint8_t> const &keySetId) {
    Mutex::Autolock autoLock(mLock);
    INIT_CHECK();

    return toStatusT(mPlugin->removeKeys(toHidlVec(keySetId)));
    Return<Status> status = mPlugin->removeKeys(toHidlVec(keySetId));
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::restoreKeys(Vector<uint8_t> const &sessionId,
@@ -781,8 +782,9 @@ status_t DrmHal::restoreKeys(Vector<uint8_t> const &sessionId,

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

    return toStatusT(mPlugin->restoreKeys(toHidlVec(sessionId),
                    toHidlVec(keySetId)));
    Return<Status> status = mPlugin->restoreKeys(toHidlVec(sessionId),
            toHidlVec(keySetId));
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::queryKeyStatus(Vector<uint8_t> const &sessionId,
@@ -923,13 +925,15 @@ status_t DrmHal::releaseSecureStops(Vector<uint8_t> const &ssRelease) {
    Mutex::Autolock autoLock(mLock);
    INIT_CHECK();

    Return<Status> status(Status::ERROR_DRM_UNKNOWN);
    if (mPluginV1_1 != NULL) {
        SecureStopRelease secureStopRelease;
        secureStopRelease.opaqueData = toHidlVec(ssRelease);
        return toStatusT(mPluginV1_1->releaseSecureStops(secureStopRelease));
        status = mPluginV1_1->releaseSecureStops(secureStopRelease);
    } else {
        status = mPlugin->releaseSecureStop(toHidlVec(ssRelease));
    }

    return toStatusT(mPlugin->releaseSecureStop(toHidlVec(ssRelease)));
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::removeSecureStop(Vector<uint8_t> const &ssid) {
@@ -943,17 +947,21 @@ status_t DrmHal::removeSecureStop(Vector<uint8_t> const &ssid) {
        return ERROR_DRM_CANNOT_HANDLE;
    }

    return toStatusT(mPluginV1_1->removeSecureStop(toHidlVec(ssid)));
    Return<Status> status = mPluginV1_1->removeSecureStop(toHidlVec(ssid));
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::removeAllSecureStops() {
    Mutex::Autolock autoLock(mLock);
    INIT_CHECK();

    Return<Status> status(Status::ERROR_DRM_UNKNOWN);
    if (mPluginV1_1 != NULL) {
        return toStatusT(mPluginV1_1->removeAllSecureStops());
        status = mPluginV1_1->removeAllSecureStops();
    } else {
        status = mPlugin->releaseAllSecureStops();
    }
    return toStatusT(mPlugin->releaseAllSecureStops());
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::getHdcpLevels(DrmPlugin::HdcpLevel *connected,
@@ -1099,9 +1107,9 @@ status_t DrmHal::setPropertyString(String8 const &name, String8 const &value ) c
    Mutex::Autolock autoLock(mLock);
    INIT_CHECK();

    Status status = mPlugin->setPropertyString(toHidlString(name),
    Return<Status> status = mPlugin->setPropertyString(toHidlString(name),
            toHidlString(value));
    return toStatusT(status);
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::setPropertyByteArray(String8 const &name,
@@ -1109,9 +1117,9 @@ status_t DrmHal::setPropertyByteArray(String8 const &name,
    Mutex::Autolock autoLock(mLock);
    INIT_CHECK();

    Status status = mPlugin->setPropertyByteArray(toHidlString(name),
    Return<Status> status = mPlugin->setPropertyByteArray(toHidlString(name),
            toHidlVec(value));
    return toStatusT(status);
    return status.isOk() ? toStatusT(status) : DEAD_OBJECT;
}

status_t DrmHal::getMetrics(PersistableBundle* item) {