Merge "Check for nullptr IMemory."
This commit is contained in:
@@ -98,7 +98,11 @@ Return<Status> WVCryptoPlugin::setMediaDrmSession(
|
|||||||
|
|
||||||
Return<void> WVCryptoPlugin::setSharedBufferBase(
|
Return<void> WVCryptoPlugin::setSharedBufferBase(
|
||||||
const hidl_memory& base, uint32_t bufferId) {
|
const hidl_memory& base, uint32_t bufferId) {
|
||||||
mSharedBufferMap[bufferId] = mapMemory(base);
|
sp<IMemory> hidlMemory = mapMemory(base);
|
||||||
|
ALOGE_IF(hidlMemory == nullptr, "mapMemory returns nullptr");
|
||||||
|
|
||||||
|
// allow mapMemory to return nullptr
|
||||||
|
mSharedBufferMap[bufferId] = hidlMemory;
|
||||||
return Void();
|
return Void();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,6 +148,10 @@ Return<void> WVCryptoPlugin::decrypt(
|
|||||||
|
|
||||||
std::string errorDetailMsg;
|
std::string errorDetailMsg;
|
||||||
sp<IMemory> sourceBase = mSharedBufferMap[source.bufferId];
|
sp<IMemory> sourceBase = mSharedBufferMap[source.bufferId];
|
||||||
|
if (sourceBase == nullptr) {
|
||||||
|
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "source is a nullptr");
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
|
|
||||||
if (source.offset + offset + source.size > sourceBase->getSize()) {
|
if (source.offset + offset + source.size > sourceBase->getSize()) {
|
||||||
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
|
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
|
||||||
@@ -157,6 +165,11 @@ Return<void> WVCryptoPlugin::decrypt(
|
|||||||
if (destination.type == BufferType::SHARED_MEMORY) {
|
if (destination.type == BufferType::SHARED_MEMORY) {
|
||||||
const SharedBuffer& destBuffer = destination.nonsecureMemory;
|
const SharedBuffer& destBuffer = destination.nonsecureMemory;
|
||||||
sp<IMemory> destBase = mSharedBufferMap[destBuffer.bufferId];
|
sp<IMemory> destBase = mSharedBufferMap[destBuffer.bufferId];
|
||||||
|
if (destBase == nullptr) {
|
||||||
|
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "destination is a nullptr");
|
||||||
|
return Void();
|
||||||
|
}
|
||||||
|
|
||||||
if (destBuffer.offset + destBuffer.size > destBase->getSize()) {
|
if (destBuffer.offset + destBuffer.size > destBase->getSize()) {
|
||||||
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
|
_hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size");
|
||||||
return Void();
|
return Void();
|
||||||
|
|||||||
Reference in New Issue
Block a user