Fix potential crash in tls_construct_finished.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Wed, 14 Jun 2017 18:25:52 +0000 (20:25 +0200)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 3 Jul 2017 14:34:33 +0000 (16:34 +0200)
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3667)

ssl/statem/statem_lib.c

index 5cd17f28361825c72f23cb25e67e0b63c17f0338..933f18ecbb187fd9b7f775c1eb9d390387236a82 100644 (file)
@@ -501,7 +501,12 @@ int tls_construct_finished(SSL *s, WPACKET *pkt)
             && (!s->method->ssl3_enc->change_cipher_state(s,
                     SSL3_CC_HANDSHAKE | SSL3_CHANGE_CIPHER_CLIENT_WRITE))) {
         SSLerr(SSL_F_TLS_CONSTRUCT_FINISHED, SSL_R_CANNOT_CHANGE_CIPHER);
-        goto err;
+        /*
+         * This is a fatal error, which leaves
+         * enc_write_ctx in an inconsistent state
+         * and thus ssl3_send_alert may crash.
+         */
+        return 0;
     }
 
     if (s->server) {