[automerge] Add mutex to CdmEngine for use of cert_provisioning_. 2p: 491dfe7690 am: 0aef7b0dd2
Original change: https://googleplex-android-review.googlesource.com/c/platform/vendor/widevine/+/21892284 Change-Id: I6a0c0d45198d938ab60cf6faa241254613d5d861 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
committed by
Automerger Merge Worker
commit
20441c9b5b
@@ -423,6 +423,8 @@ class CdmEngine {
|
|||||||
CdmSessionMap session_map_;
|
CdmSessionMap session_map_;
|
||||||
CdmReleaseKeySetMap release_key_sets_;
|
CdmReleaseKeySetMap release_key_sets_;
|
||||||
std::unique_ptr<CertificateProvisioning> cert_provisioning_;
|
std::unique_ptr<CertificateProvisioning> cert_provisioning_;
|
||||||
|
// Lock must be acquired before using |cert_provisioning_|.
|
||||||
|
std::mutex cert_provisioning_mutex_;
|
||||||
FileSystem* file_system_;
|
FileSystem* file_system_;
|
||||||
Clock clock_;
|
Clock clock_;
|
||||||
std::string spoid_;
|
std::string spoid_;
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ class UsagePropertySet : public CdmClientPropertySet {
|
|||||||
CdmEngine::CdmEngine(FileSystem* file_system,
|
CdmEngine::CdmEngine(FileSystem* file_system,
|
||||||
std::shared_ptr<metrics::EngineMetrics> metrics)
|
std::shared_ptr<metrics::EngineMetrics> metrics)
|
||||||
: metrics_(metrics),
|
: metrics_(metrics),
|
||||||
cert_provisioning_(),
|
|
||||||
file_system_(file_system),
|
file_system_(file_system),
|
||||||
spoid_(EMPTY_SPOID),
|
spoid_(EMPTY_SPOID),
|
||||||
usage_session_(),
|
usage_session_(),
|
||||||
@@ -1011,6 +1010,7 @@ CdmResponseType CdmEngine::GetProvisioningRequest(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO(b/141705730): Remove usage entries on provisioning.
|
// TODO(b/141705730): Remove usage entries on provisioning.
|
||||||
|
std::unique_lock<std::mutex> cert_lock(cert_provisioning_mutex_);
|
||||||
if (!cert_provisioning_) {
|
if (!cert_provisioning_) {
|
||||||
cert_provisioning_.reset(
|
cert_provisioning_.reset(
|
||||||
new CertificateProvisioning(metrics_->GetCryptoMetrics()));
|
new CertificateProvisioning(metrics_->GetCryptoMetrics()));
|
||||||
@@ -1040,6 +1040,7 @@ CdmResponseType CdmEngine::HandleProvisioningResponse(
|
|||||||
std::string* wrapped_key) {
|
std::string* wrapped_key) {
|
||||||
LOGI("response_size = %zu, security_level = %s", response.size(),
|
LOGI("response_size = %zu, security_level = %s", response.size(),
|
||||||
SecurityLevelToString(requested_security_level));
|
SecurityLevelToString(requested_security_level));
|
||||||
|
std::unique_lock<std::mutex> cert_lock(cert_provisioning_mutex_);
|
||||||
if (response.empty()) {
|
if (response.empty()) {
|
||||||
LOGE("Empty provisioning response");
|
LOGE("Empty provisioning response");
|
||||||
cert_provisioning_.reset();
|
cert_provisioning_.reset();
|
||||||
|
|||||||
Reference in New Issue
Block a user