Index: net/cert/cert_verify_proc_win.cc |
diff --git a/net/cert/cert_verify_proc_win.cc b/net/cert/cert_verify_proc_win.cc |
index ef334da0ae464bfa88bfdd804d702aa02b06e2c3..a9d90df87f052b882c05fe4a6929cacd6f151c9a 100644 |
--- a/net/cert/cert_verify_proc_win.cc |
+++ b/net/cert/cert_verify_proc_win.cc |
@@ -369,8 +369,12 @@ void GetCertChainInfo(PCCERT_CHAIN_CONTEXT chain_context, |
// Add the root certificate, if present, as it was not added above. |
if (has_root_ca) |
verified_chain.push_back(element[num_elements]->pCertContext); |
- verify_result->verified_cert = |
- X509Certificate::CreateFromHandle(verified_cert, verified_chain); |
+ scoped_refptr<X509Certificate> verified_cert_with_chain = |
+ X509Certificate::CreateFromHandle(verified_cert, verified_chain); |
+ if (verified_cert_with_chain) |
+ verify_result->verified_cert = std::move(verified_cert_with_chain); |
+ else |
+ verify_result->cert_status |= CERT_STATUS_INVALID; |
} |
} |