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

Commit 20795c7c authored by Jeff Tinker's avatar Jeff Tinker
Browse files

Fix mediadrmserver segfault in GTS tests

When clearHeapBase is called after a plugin is
closed, a null pointer is dereferenced. Protect
against it with a null pointer check.

Test: GTS media tests, check logcat for faults

bug:80434750
Change-Id: Ib568694c44fe22887c3db4f88e67cb598fd9e36a
parent 0db0fa1d
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -269,12 +269,16 @@ void CryptoHal::clearHeapBase(int32_t seqNum) {
     * TODO: Add a releaseSharedBuffer method in a future DRM HAL
     * API version to make this explicit.
     */
    uint32_t bufferId = mHeapBases.valueFor(seqNum).getBufferId();
    ssize_t index = mHeapBases.indexOfKey(seqNum);
    if (index >= 0) {
        if (mPlugin != NULL) {
            uint32_t bufferId = mHeapBases[index].getBufferId();
            Return<void> hResult = mPlugin->setSharedBufferBase(hidl_memory(), bufferId);
            ALOGE_IF(!hResult.isOk(), "setSharedBufferBase(): remote call failed");

        }
        mHeapBases.removeItem(seqNum);
    }
}

status_t CryptoHal::toSharedBuffer(const sp<IMemory>& memory, int32_t seqNum, ::SharedBuffer* buffer) {
    ssize_t offset;