summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdwin Wong <edwinwong@google.com>2019-11-26 14:40:45 -0800
committerEdwin Wong <edwinwong@google.com>2020-01-08 01:20:01 +0000
commit2587ab6c7642062ea1791de1868c28b1164a073c (patch)
tree6c2e29839ae30177cc4b9e21b51a02159767fa33
parent1d2cccfd2abecda52b49f123bf5905079578c542 (diff)
downloadframeworks_av-2587ab6c7642062ea1791de1868c28b1164a073c.tar.gz
frameworks_av-2587ab6c7642062ea1791de1868c28b1164a073c.tar.bz2
frameworks_av-2587ab6c7642062ea1791de1868c28b1164a073c.zip
[DO NOT MERGE] Fix heap buffer overflow for releaseSecureStops.
If the input SecureStopRelease size is less than sizeof(uint32_t) in releaseSecureStops(), an out of bound read will occur. bug: 144766455 bug: 144746235 bug: 147281068 Test: sts ANDROID_BUILD_TOP= ./android-sts/tools/sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Poc19_11#testPocBug_144766455 Change-Id: I050504c1ef4e5c41fb47ee97e98db41399288a91
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
index d51e29dc57..30f745913a 100644
--- a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
+++ b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
@@ -531,6 +531,11 @@ Return<Status> DrmPlugin::releaseSecureStops(const SecureStopRelease& ssRelease)
// count - number of secure stops
// list of fixed length secure stops
size_t countBufferSize = sizeof(uint32_t);
+ if (input.size() < countBufferSize) {
+ // SafetyNet logging
+ android_errorWriteLog(0x534e4554, "144766455");
+ return Status::BAD_VALUE;
+ }
uint32_t count = 0;
sscanf(reinterpret_cast<char*>(input.data()), "%04" PRIu32, &count);