diff options
| author | Luca Stefani <luca.stefani.ge1@gmail.com> | 2020-04-09 21:54:42 +0200 |
|---|---|---|
| committer | Luca Stefani <luca.stefani.ge1@gmail.com> | 2020-04-09 21:54:42 +0200 |
| commit | 3b04f2bcc867ef7f621e76f056e76acf0273271b (patch) | |
| tree | 8792df0b6d4b9a249aa1fa3838299feb012b21fd | |
| parent | 95e7e86b94f67ad26a1592e78eb7a17e742a396b (diff) | |
| parent | 674ce2363382aced0104f52addf191364aa4e6a5 (diff) | |
| download | frameworks_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.cpp | 2 | ||||
| -rw-r--r-- | drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp | 6 | ||||
| -rw-r--r-- | services/audiopolicy/managerdefault/AudioPolicyManager.h | 2 |
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 { |
