Move setting the session_id_len until after we filled the session_id
authorMatt Caswell <matt@openssl.org>
Mon, 7 Nov 2016 15:09:19 +0000 (15:09 +0000)
committerMatt Caswell <matt@openssl.org>
Wed, 9 Nov 2016 09:10:30 +0000 (09:10 +0000)
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
ssl/statem/statem_srvr.c

index 7cc3dfac544ef06c1f726107e66f813d47865e3e..b09ed1dbc4a6f20b7b3096c5a13993171d009c4f 100644 (file)
@@ -963,7 +963,6 @@ MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
             al = SSL_AD_DECODE_ERROR;
             goto f_err;
         }
-        clienthello.session_id_len = session_id_len;
 
         if (session_id_len > SSL_MAX_SSL_SESSION_ID_LENGTH) {
             al = SSL_AD_DECODE_ERROR;
@@ -973,8 +972,7 @@ MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
 
         if (!PACKET_get_sub_packet(pkt, &clienthello.ciphersuites,
                                    ciphersuite_len)
-            || !PACKET_copy_bytes(pkt, clienthello.session_id,
-                                      clienthello.session_id_len)
+            || !PACKET_copy_bytes(pkt, clienthello.session_id, session_id_len)
             || !PACKET_get_sub_packet(pkt, &challenge, challenge_len)
             /* No extensions. */
             || PACKET_remaining(pkt) != 0) {
@@ -983,6 +981,7 @@ MSG_PROCESS_RETURN tls_process_client_hello(SSL *s, PACKET *pkt)
             al = SSL_AD_DECODE_ERROR;
             goto f_err;
         }
+        clienthello.session_id_len = session_id_len;
 
         /* Load the client random and compression list. */
         challenge_len = challenge_len > sizeof(clienthello.random)