summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin F. Haggerty <haggertk@lineageos.org>2020-05-06 06:45:18 -0600
committerKevin F. Haggerty <haggertk@lineageos.org>2020-05-06 06:45:18 -0600
commit369f32017c08cd91986d38732feb08a79df551b9 (patch)
tree3852ccd80156b955de466e16f33cd00e8bb63bee
parentcbcfaedc880594fa82add2f2a64787f8c051886c (diff)
parentc7737b01fd9f98b0e42158c951cd490df9fbb954 (diff)
downloadandroid_frameworks_av-lineage-15.1.tar.gz
android_frameworks_av-lineage-15.1.tar.bz2
android_frameworks_av-lineage-15.1.zip
Merge tag 'android-8.1.0_r76' of https://android.googlesource.com/platform/frameworks/av into staging/lineage-15.1_merge-android-8.1.0_r76lineage-15.1
Android 8.1.0 release 76 * tag 'android-8.1.0_r76' of https://android.googlesource.com/platform/frameworks/av: BnCrypto: fix use-before-init in CREATE_PLUGIN [DO NOT MERGE] Fix uninitialized data in IHDCP decrypt Change-Id: I913206116c2b4fc1b29757ea76c7b67eeb60d707
-rw-r--r--drm/libmediadrm/ICrypto.cpp14
-rw-r--r--media/libmedia/IHDCP.cpp11
2 files changed, 17 insertions, 8 deletions
diff --git a/drm/libmediadrm/ICrypto.cpp b/drm/libmediadrm/ICrypto.cpp
index ee5ea936c4..7931ed755c 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);
diff --git a/media/libmedia/IHDCP.cpp b/media/libmedia/IHDCP.cpp
index a46017ff9d..c608175ddd 100644
--- a/media/libmedia/IHDCP.cpp
+++ b/media/libmedia/IHDCP.cpp
@@ -333,11 +333,12 @@ status_t BnHDCP::onTransact(
void *outData = (uint8_t *)inData + size;
- data.read(inData, size);
-
- uint32_t streamCTR = data.readInt32();
- uint64_t inputCTR = data.readInt64();
- status_t err = decrypt(inData, size, streamCTR, inputCTR, outData);
+ status_t err = data.read(inData, size);
+ if (err == OK) {
+ uint32_t streamCTR = data.readInt32();
+ uint64_t inputCTR = data.readInt64();
+ err = decrypt(inData, size, streamCTR, inputCTR, outData);
+ }
reply->writeInt32(err);