summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuca Stefani <luca.stefani.ge1@gmail.com>2020-04-09 21:54:42 +0200
committerLuca Stefani <luca.stefani.ge1@gmail.com>2020-04-09 21:54:42 +0200
commit3b04f2bcc867ef7f621e76f056e76acf0273271b (patch)
tree8792df0b6d4b9a249aa1fa3838299feb012b21fd
parent95e7e86b94f67ad26a1592e78eb7a17e742a396b (diff)
parent674ce2363382aced0104f52addf191364aa4e6a5 (diff)
downloadframeworks_av-3b04f2bcc867ef7f621e76f056e76acf0273271b.tar.gz
frameworks_av-3b04f2bcc867ef7f621e76f056e76acf0273271b.tar.bz2
frameworks_av-3b04f2bcc867ef7f621e76f056e76acf0273271b.zip
Merge tag 'android-10.0.0_r33' into lineage-17.1-android-10.0.0_r33
Android 10.0.0 Release 33 (QQ2A.200405.005) * tag 'android-10.0.0_r33': Revert "audiopolicy: align input and output devices for engine" [DO NOT MERGE] Fix heap buffer overflow in clearkey CryptoPlugin::decrypt [DO NOT MERGE] Fix heap buffer overflow for releaseSecureStops. Change-Id: I6d5446fed03dc4c8a109acb40805e796ba3da00e
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp2
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp6
-rw-r--r--services/audiopolicy/managerdefault/AudioPolicyManager.h2
3 files changed, 9 insertions, 1 deletions
diff --git a/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp
index f164f2859b..3ecf6d5acd 100644
--- a/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp
+++ b/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp
@@ -136,6 +136,8 @@ Return<void> CryptoPlugin::decrypt_1_2(
return Void();
}
+ base = static_cast<uint8_t *>(static_cast<void *>(destBase->getPointer()));
+
if (destBuffer.offset + destBuffer.size > destBase->getSize()) {
_hidl_cb(Status_V1_2::ERROR_DRM_FRAME_TOO_LARGE, 0, "invalid buffer size");
return Void();
diff --git a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
index 71bb2185bd..aab475ed88 100644
--- a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
+++ b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp
@@ -818,6 +818,12 @@ Return<Status> DrmPlugin::releaseSecureStops(const SecureStopRelease& ssRelease)
// and the drm service. The clearkey implementation consists of:
// 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);
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.h b/services/audiopolicy/managerdefault/AudioPolicyManager.h
index f33ad65b89..253a4615d1 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.h
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.h
@@ -346,7 +346,7 @@ protected:
}
virtual const DeviceVector getAvailableOutputDevices() const
{
- return mAvailableOutputDevices;
+ return mAvailableOutputDevices.filterForEngine();
}
virtual const DeviceVector getAvailableInputDevices() const
{