diff options
author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-03-11 20:29:38 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-03-11 20:29:38 +0000 |
commit | d8d4e803842bed4188606856858189054a89c95c (patch) | |
tree | 07cbd892a9032ee2899f69abeaf200d0eb447d24 | |
parent | 509f1a5030ec005db387a4f0420af12e03d1b7f8 (diff) | |
parent | 245e44d9cfe008fcc460126f8992abf6c299a45c (diff) | |
download | frameworks_av-d8d4e803842bed4188606856858189054a89c95c.tar.gz frameworks_av-d8d4e803842bed4188606856858189054a89c95c.tar.bz2 frameworks_av-d8d4e803842bed4188606856858189054a89c95c.zip |
BnCrypto: fix use-before-init in CREATE_PLUGIN am: 4bbfb6d881 am: a9296786e3 am: 245e44d9cf
Change-Id: I480db45b78b567a832d591df0834dbdae6cf88d0
-rw-r--r-- | drm/libmediadrm/ICrypto.cpp | 14 |
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); |