Add mutex to CdmEngine for use of cert_provisioning_. am: 48bfaab32f am: 8ef7063d37

Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/21900046

Change-Id: Ifd3597f01ea72172065c44cf467248b63372a3f8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Alex Dale
2023-03-30 17:02:20 +00:00
committed by Automerger Merge Worker
2 changed files with 4 additions and 1 deletions

View File

@@ -438,6 +438,8 @@ class CdmEngine {
CdmSessionMap session_map_;
CdmReleaseKeySetMap release_key_sets_;
std::unique_ptr<CertificateProvisioning> cert_provisioning_;
// Lock must be acquired before using |cert_provisioning_|.
std::mutex cert_provisioning_mutex_;
wvutil::FileSystem* file_system_;
wvutil::Clock clock_;
std::string spoid_;

View File

@@ -65,7 +65,6 @@ class UsagePropertySet : public CdmClientPropertySet {
CdmEngine::CdmEngine(wvutil::FileSystem* file_system,
std::shared_ptr<metrics::EngineMetrics> metrics)
: metrics_(metrics),
cert_provisioning_(),
file_system_(file_system),
spoid_(EMPTY_SPOID),
usage_session_(),
@@ -1064,6 +1063,7 @@ CdmResponseType CdmEngine::GetProvisioningRequest(
}
// TODO(b/141705730): Remove usage entries on provisioning.
std::unique_lock<std::mutex> cert_lock(cert_provisioning_mutex_);
if (!cert_provisioning_) {
cert_provisioning_.reset(
new CertificateProvisioning(metrics_->GetCryptoMetrics()));
@@ -1093,6 +1093,7 @@ CdmResponseType CdmEngine::HandleProvisioningResponse(
std::string* wrapped_key) {
LOGI("response_size = %zu, security_level = %s", response.size(),
RequestedSecurityLevelToString(requested_security_level));
std::unique_lock<std::mutex> cert_lock(cert_provisioning_mutex_);
if (response.empty()) {
LOGE("Empty provisioning response");
cert_provisioning_.reset();