Index: net/socket/ssl_client_socket_nss.cc |
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc |
index 44aa5796a5d96a5665f741e48fed91a870a7e50e..cf74ef1c93e1d595fc93b646364e4a7425f6132d 100644 |
--- a/net/socket/ssl_client_socket_nss.cc |
+++ b/net/socket/ssl_client_socket_nss.cc |
@@ -723,11 +723,12 @@ X509Certificate *SSLClientSocketNSS::UpdateServerCert() { |
cert_handle, |
X509Certificate::SOURCE_FROM_NETWORK, |
intermediate_ca_certs); |
+ X509Certificate::FreeOSCertHandle(cert_handle); |
for (size_t i = 0; i < intermediate_ca_certs.size(); ++i) |
X509Certificate::FreeOSCertHandle(intermediate_ca_certs[i]); |
#else |
server_cert_ = X509Certificate::CreateFromHandle( |
- CERT_DupCertificate(server_cert_nss_), |
+ server_cert_nss_, |
X509Certificate::SOURCE_FROM_NETWORK, |
X509Certificate::OSCertHandles()); |
#endif |
@@ -1257,7 +1258,8 @@ SECStatus SSLClientSocketNSS::ClientAuthHandler( |
} |
scoped_refptr<X509Certificate> cert = X509Certificate::CreateFromHandle( |
cert_context2, X509Certificate::SOURCE_LONE_CERT_IMPORT, |
- net::X509Certificate::OSCertHandles()); |
+ X509Certificate::OSCertHandles()); |
+ X509Certificate::FreeOSCertHandle(cert_context2); |
that->client_certs_.push_back(cert); |
} |
@@ -1342,6 +1344,7 @@ SECStatus SSLClientSocketNSS::ClientAuthHandler( |
cert, X509Certificate::SOURCE_LONE_CERT_IMPORT, |
net::X509Certificate::OSCertHandles()); |
that->client_certs_.push_back(x509_cert); |
+ CERT_DestroyCertificate(cert); |
SECKEY_DestroyPrivateKey(privkey); |
continue; |
} |