Don't have the default value of |verify_result| be X509_V_OK.
It seems much safer for the default value of |verify_result| to be an
error value.
Change-Id: I372ec19c41d77516ed12d0169969994f7d23ed70
Reviewed-on: https://boringssl-review.googlesource.com/9063
Reviewed-by: Adam Langley <agl@google.com>
Commit-Queue: Adam Langley <agl@google.com>
CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/handshake_client.c b/ssl/handshake_client.c
index d78bc27..d434487 100644
--- a/ssl/handshake_client.c
+++ b/ssl/handshake_client.c
@@ -1041,8 +1041,6 @@
X509_free(ssl->s3->new_session->peer);
ssl->s3->new_session->peer = X509_up_ref(leaf);
- ssl->s3->new_session->verify_result = ssl->verify_result;
-
return 1;
err:
@@ -1097,12 +1095,13 @@
int al = ssl_verify_alarm_type(ssl->verify_result);
ssl3_send_alert(ssl, SSL3_AL_FATAL, al);
OPENSSL_PUT_ERROR(SSL, SSL_R_CERTIFICATE_VERIFY_FAILED);
- } else {
- ret = 1;
- ERR_clear_error(); /* but we keep ssl->verify_result */
+ return ret;
}
- return ret;
+ /* Otherwise the error is non-fatal, but we keep verify_result. */
+ ERR_clear_error();
+ ssl->s3->new_session->verify_result = ssl->verify_result;
+ return 1;
}
static int ssl3_get_server_key_exchange(SSL *ssl) {