diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2021-02-09 01:28:50 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2021-02-09 01:28:50 +0000 |
commit | 0025b6914b936cbecfe9a8527e0bfd1ab9c83b51 (patch) | |
tree | 34ec1941cd2905e682ef9e74d3f8a336f35a59cf | |
parent | 72127d72fac156603483e1f6f08522b0d6d54452 (diff) | |
parent | e5bfb560a63daedbe1adf8bf41a20b572654f999 (diff) |
Merge cherrypicks of [13524839, 13524840, 13524841, 13524928, 13524929, 13524930, 13522744, 13524951, 13524860, 13524371, 13524372, 13524373, 13524374, 13524861, 13525166, 13525167, 13525168, 13524843, 13524957, 13524958, 13524936, 13525246, 13524939, 13524940, 13525248, 13524942, 13525249, 13525250, 13525251, 13524943, 13525169, 13525170, 13524358, 13524961, 13524962, 13524963, 13524966, 13524844, 13525325, 13525326, 13524964, 13525327, 13525328, 13524359, 13525307, 13525345] into rvc-qpr2-release
Change-Id: I32889c5f23592d2e3b2e49f7e06e6f6751ae93a0
5 files changed, 9 insertions, 1 deletions
diff --git a/drm/mediadrm/plugins/clearkey/default/DrmPlugin.cpp b/drm/mediadrm/plugins/clearkey/default/DrmPlugin.cpp index 1b8b8c1e65..6ac3510c7c 100644 --- a/drm/mediadrm/plugins/clearkey/default/DrmPlugin.cpp +++ b/drm/mediadrm/plugins/clearkey/default/DrmPlugin.cpp @@ -109,6 +109,7 @@ status_t DrmPlugin::getKeyRequest( } void DrmPlugin::setPlayPolicy() { + android::Mutex::Autolock lock(mPlayPolicyLock); mPlayPolicy.clear(); mPlayPolicy.add(kQueryKeyLicenseType, kStreaming); mPlayPolicy.add(kQueryKeyPlayAllowed, kTrue); diff --git a/drm/mediadrm/plugins/clearkey/default/include/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/default/include/DrmPlugin.h index 4fa42e50af..aa9b59ddbb 100644 --- a/drm/mediadrm/plugins/clearkey/default/include/DrmPlugin.h +++ b/drm/mediadrm/plugins/clearkey/default/include/DrmPlugin.h @@ -262,6 +262,7 @@ private: void initProperties(); void setPlayPolicy(); + android::Mutex mPlayPolicyLock; android::KeyedVector<String8, String8> mPlayPolicy; android::KeyedVector<String8, String8> mStringProperties; android::KeyedVector<String8, Vector<uint8_t>> mByteArrayProperties; diff --git a/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp b/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp index 1495703012..d278633482 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp +++ b/drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp @@ -119,7 +119,11 @@ Return<void> CryptoPlugin::decrypt_1_2( return Void(); } - if (source.offset + offset + source.size > sourceBase->getSize()) { + size_t totalSize = 0; + if (__builtin_add_overflow(source.offset, offset, &totalSize) || + __builtin_add_overflow(totalSize, source.size, &totalSize) || + totalSize > sourceBase->getSize()) { + android_errorWriteLog(0x534e4554, "176496160"); _hidl_cb(Status_V1_2::ERROR_DRM_CANNOT_HANDLE, 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 f87f83025c..a77759eaef 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp +++ b/drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp @@ -304,6 +304,7 @@ Return<void> DrmPlugin::getKeyRequest_1_2( } void DrmPlugin::setPlayPolicy() { + android::Mutex::Autolock lock(mPlayPolicyLock); mPlayPolicy.clear(); KeyValue policy; diff --git a/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h index 3de758945b..076beb8a0d 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h +++ b/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h @@ -406,6 +406,7 @@ private: int64_t mCloseSessionOkCount; int64_t mCloseSessionNotOpenedCount; uint32_t mNextSecureStopId; + android::Mutex mPlayPolicyLock; // set by property to mock error scenarios Status_V1_2 mMockError; |