summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2020-02-04 17:23:58 -0800
committerAnis Assi <anisassi@google.com>2020-03-12 13:37:40 -0700
commit48aad4d8791a794bd89148d72d13aff7445b8dd6 (patch)
tree05c965a47f3274f77f850290201c3aea529b1cc2
parent7f0714951555cf92df2fa3c85a0250be048948cb (diff)
downloadframeworks_av-48aad4d8791a794bd89148d72d13aff7445b8dd6.tar.gz
frameworks_av-48aad4d8791a794bd89148d72d13aff7445b8dd6.tar.bz2
frameworks_av-48aad4d8791a794bd89148d72d13aff7445b8dd6.zip
BnCrypto: fix use-before-init in CREATE_PLUGIN
Bug: 144767096 Test: poc_ICrypto_283 Merged-In: Id67dc9e793ee886e4cc49370d800c7f3580df313 Merged-In: I81ff7cde5e1693f05c90380e879f74d0c4bce5f1 Change-Id: If268553440b8a0cbbe011b5396974fd864a7d083 (cherry picked from commit 4bbfb6d8815002fc79b26aebba5f3ad2226c468e)
-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);