Fix for concurrent provisioning attempts
[ Merge from http://go/wvgerrit/14670 ] Concurrent provisioning attempts are declared successful if any one of them succeeds. Earlier only the successful ones were declared as such. b/21727698 Change-Id: I67dedca44790a4ae236e14f90a8fc91775273905
This commit is contained in:
@@ -566,8 +566,26 @@ CdmResponseType CdmEngine::HandleProvisioningResponse(
|
||||
return INVALID_PROVISIONING_PARAMETERS_2;
|
||||
}
|
||||
if (NULL == cert_provisioning_.get()) {
|
||||
LOGE("CdmEngine::HandleProvisioningResponse: provisioning object missing.");
|
||||
return EMPTY_PROVISIONING_CERTIFICATE;
|
||||
// Certificate provisioning object has been released. Check if a concurrent
|
||||
// provisioning attempt has succeeded before declaring failure.
|
||||
CryptoSession crypto_session;
|
||||
CdmResponseType status =
|
||||
crypto_session.Open(cert_provisioning_requested_security_level_);
|
||||
if (NO_ERROR != status) {
|
||||
LOGE(
|
||||
"CdmEngine::HandleProvisioningResponse: provisioning object "
|
||||
"missing and crypto session open failed.");
|
||||
return EMPTY_PROVISIONING_CERTIFICATE_2;
|
||||
}
|
||||
CdmSecurityLevel security_level = crypto_session.GetSecurityLevel();
|
||||
if (!IsProvisioned(security_level, origin)) {
|
||||
LOGE(
|
||||
"CdmEngine::HandleProvisioningResponse: provisioning object "
|
||||
"missing.");
|
||||
return EMPTY_PROVISIONING_CERTIFICATE_1;
|
||||
}
|
||||
|
||||
return NO_ERROR;
|
||||
}
|
||||
CdmResponseType ret = cert_provisioning_->HandleProvisioningResponse(
|
||||
origin, response, cert, wrapped_key);
|
||||
|
||||
Reference in New Issue
Block a user