summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-13 00:46:41 +0000
committermmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-13 00:46:41 +0000
commit4062b7c49d4ca4c45234b8180c96a7d67ee7eb60 (patch)
treefacf19c85f9791528ed4eada3e7cee3763d6c962
parenteef23ec5b8bc379765b47f086459be59aaf88b03 (diff)
downloadchromium_src-4062b7c49d4ca4c45234b8180c96a7d67ee7eb60.zip
chromium_src-4062b7c49d4ca4c45234b8180c96a7d67ee7eb60.tar.gz
chromium_src-4062b7c49d4ca4c45234b8180c96a7d67ee7eb60.tar.bz2
Fix NetLog thread safety issue introduced in
http://codereview.chromium.org/10539094/. We weren't holding on to a reference for an x509Certificate passed to another thread for logging. BUG=126243 Review URL: https://chromiumcodereview.appspot.com/10534117 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141812 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--net/socket/ssl_client_socket_nss.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc
index 86c7747..bf1580d 100644
--- a/net/socket/ssl_client_socket_nss.cc
+++ b/net/socket/ssl_client_socket_nss.cc
@@ -2529,9 +2529,11 @@ void SSLClientSocketNSS::Core::UpdateServerCert() {
nss_handshake_state_.server_cert = X509Certificate::CreateFromDERCertChain(
nss_handshake_state_.server_cert_chain.AsStringPieceVector());
if (nss_handshake_state_.server_cert) {
+ // Since this will be called asynchronously on another thread, it needs to
+ // own a reference to the certificate.
NetLog::ParametersCallback net_log_callback =
base::Bind(&NetLogX509CertificateCallback,
- base::Unretained(nss_handshake_state_.server_cert.get()));
+ nss_handshake_state_.server_cert);
PostOrRunCallback(
FROM_HERE,
base::Bind(&AddLogEventWithCallback, weak_net_log_,