From dc4c427b2155a9928a7cdaac7c0a787dd9c8192d Mon Sep 17 00:00:00 2001 From: Edwin Wong Date: Tue, 17 Dec 2019 17:56:17 -0800 Subject: [DO NOT MERGE] Fix heap buffer overflow in clearkey CryptoPlugin::decrypt Fix destPtr was not pointing to destination raw pointer. bug: 144506242 Test: sts ANDROID_BUILD_TOP= ./android-sts/tools/sts-tradefed run sts-engbuild-no-spl-lock -m StsHostTestCases --test android.security.sts.Poc19_12#testPocBug_144506242 Change-Id: I9425baa21c82d5a5edf37c87989adbade0428b67 --- drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'drm') diff --git a/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp index 198e0997d0..cd2224db97 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp +++ b/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp @@ -106,6 +106,8 @@ Return CryptoPlugin::decrypt( return Void(); } + base = static_cast(static_cast(destBase->getPointer())); + if (destBuffer.offset + destBuffer.size > destBase->getSize()) { _hidl_cb(Status::ERROR_DRM_CANNOT_HANDLE, 0, "invalid buffer size"); return Void(); -- cgit v1.2.3