diff options
author | hawk@chromium.org <hawk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-13 20:57:03 +0000 |
---|---|---|
committer | hawk@chromium.org <hawk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-13 20:57:03 +0000 |
commit | e4295f1ed20adbceef9e24ab78bb604728a8ce42 (patch) | |
tree | 8150b092f566c63fe7b64a39301d653de8e1d308 /net/socket | |
parent | 9af506084e92488285a4f213d35784449979bb97 (diff) | |
download | chromium_src-e4295f1ed20adbceef9e24ab78bb604728a8ce42.zip chromium_src-e4295f1ed20adbceef9e24ab78bb604728a8ce42.tar.gz chromium_src-e4295f1ed20adbceef9e24ab78bb604728a8ce42.tar.bz2 |
Remember the server certificate on Mac OS X even if the handshake fails
BUG=23569
TEST=https://rbacpro.sftcomp.ru/ should report "invalid certificate" rather than crash
Review URL: http://codereview.chromium.org/270034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28883 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket')
-rw-r--r-- | net/socket/ssl_client_socket_mac.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/socket/ssl_client_socket_mac.cc b/net/socket/ssl_client_socket_mac.cc index 0f83ad7..1a0c6a5 100644 --- a/net/socket/ssl_client_socket_mac.cc +++ b/net/socket/ssl_client_socket_mac.cc @@ -507,6 +507,8 @@ bool SSLClientSocketMac::SetSendBufferSize(int32 size) { void SSLClientSocketMac::GetSSLInfo(SSLInfo* ssl_info) { ssl_info->Reset(); + if (!server_cert_) + return; // set cert ssl_info->cert = server_cert_; @@ -604,8 +606,9 @@ int SSLClientSocketMac::DoHandshakeStart() { if (status == errSSLWouldBlock) next_state_ = STATE_HANDSHAKE_START; + server_cert_ = GetServerCert(ssl_context_); + if (status == noErr || status == errSSLServerAuthCompletedFlag) { - server_cert_ = GetServerCert(ssl_context_); if (!server_cert_) return ERR_UNEXPECTED; |