diff options
author | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-13 00:46:41 +0000 |
---|---|---|
committer | mmenke@chromium.org <mmenke@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-13 00:46:41 +0000 |
commit | 4062b7c49d4ca4c45234b8180c96a7d67ee7eb60 (patch) | |
tree | facf19c85f9791528ed4eada3e7cee3763d6c962 | |
parent | eef23ec5b8bc379765b47f086459be59aaf88b03 (diff) | |
download | chromium_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.cc | 4 |
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_, |