summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-03-11 20:40:49 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-03-11 20:40:49 +0000
commit886419a51c28003ad27ff89a9fcd0a4b3230df81 (patch)
tree88b5781497959c2bdaa627c9764ac1ce05e4c5f0
parentf3f966faa6f46156726a338208f6c10a97d3fb4b (diff)
parentd8d4e803842bed4188606856858189054a89c95c (diff)
downloadframeworks_av-886419a51c28003ad27ff89a9fcd0a4b3230df81.tar.gz
frameworks_av-886419a51c28003ad27ff89a9fcd0a4b3230df81.tar.bz2
frameworks_av-886419a51c28003ad27ff89a9fcd0a4b3230df81.zip
BnCrypto: fix use-before-init in CREATE_PLUGIN am: 4bbfb6d881 am: a9296786e3 am: 245e44d9cf am: d8d4e80384
Change-Id: I61799ad95db7c74c031f633a6ec19c27f491bd4b
-rw-r--r--drm/libmediadrm/ICrypto.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/drm/libmediadrm/ICrypto.cpp b/drm/libmediadrm/ICrypto.cpp
index a2594aa2d8..8d8d0880b2 100644
--- a/drm/libmediadrm/ICrypto.cpp
+++ b/drm/libmediadrm/ICrypto.cpp
@@ -264,8 +264,12 @@ status_t BnCrypto::onTransact(
{
CHECK_INTERFACE(ICrypto, data, reply);
- uint8_t uuid[16];
- data.read(uuid, sizeof(uuid));
+ uint8_t uuid[16] = {0};
+ if (data.read(uuid, sizeof(uuid)) != NO_ERROR) {
+ android_errorWriteLog(0x534e4554, "144767096");
+ reply->writeInt32(BAD_VALUE);
+ return OK;
+ }
size_t opaqueSize = data.readInt32();
void *opaqueData = NULL;
@@ -280,7 +284,11 @@ status_t BnCrypto::onTransact(
return NO_MEMORY;
}
- data.read(opaqueData, opaqueSize);
+ if (data.read(opaqueData, opaqueSize) != NO_ERROR) {
+ android_errorWriteLog(0x534e4554, "144767096");
+ reply->writeInt32(BAD_VALUE);
+ return OK;
+ }
reply->writeInt32(createPlugin(uuid, opaqueData, opaqueSize));
free(opaqueData);