Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(861)

Unified Diff: net/ssl/client_cert_store_nss.cc

Issue 2760723002: Check X509Certificate::CreateFromHandle result. (Closed)
Patch Set: 2nd round of updates Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..b5d77af6130c3689a6acfa8b817a7af29736492c 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(std::move(cert));
}
CERT_DestroyCertList(found_certs);
}

Powered by Google App Engine
This is Rietveld 408576698