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
gugelfrei
Jeff Tinker 6 years ago
parent 0db0fa1db2
commit 20795c7cec

@ -269,11 +269,15 @@ 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();
Return<void> hResult = mPlugin->setSharedBufferBase(hidl_memory(), bufferId);
ALOGE_IF(!hResult.isOk(), "setSharedBufferBase(): remote call failed");
mHeapBases.removeItem(seqNum);
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) {

Loading…
Cancel
Save