| Index: net/ssl/client_cert_store_nss.cc
|
| diff --git a/net/ssl/client_cert_store_nss.cc b/net/ssl/client_cert_store_nss.cc
|
| index dab47284180a3ea0f2bf2618edc2cf197da3853c..7e836a50c6b510efb970e79703013df7a6b728a7 100644
|
| --- a/net/ssl/client_cert_store_nss.cc
|
| +++ b/net/ssl/client_cert_store_nss.cc
|
| @@ -99,6 +99,8 @@ void ClientCertStoreNSS::FilterCertsOnWorkerThread(
|
| // https://crbug.com/548631.
|
| filtered_certs->push_back(
|
| X509Certificate::CreateFromHandle(handle, intermediates_raw));
|
| + // |handle| was successfully parsed by |cert|, so this should never fail.
|
| + DCHECK(filtered_certs->back());
|
| }
|
| DVLOG(2) << "num_raw:" << num_raw
|
| << " num_filtered:" << filtered_certs->size();
|
| @@ -131,8 +133,13 @@ void ClientCertStoreNSS::GetPlatformCertsOnWorkerThread(
|
| }
|
| for (CERTCertListNode* node = CERT_LIST_HEAD(found_certs);
|
| !CERT_LIST_END(node, found_certs); node = CERT_LIST_NEXT(node)) {
|
| - certs->push_back(X509Certificate::CreateFromHandle(
|
| - node->cert, X509Certificate::OSCertHandles()));
|
| + scoped_refptr<X509Certificate> cert = X509Certificate::CreateFromHandle(
|
| + node->cert, X509Certificate::OSCertHandles());
|
| + if (!cert) {
|
| + DVLOG(2) << "X509Certificate::CreateFromHandle failed";
|
| + continue;
|
| + }
|
| + certs->push_back(cert);
|
| }
|
| CERT_DestroyCertList(found_certs);
|
| }
|
|
|