Ignore the record version in TLS1.3
authorMatt Caswell <matt@openssl.org>
Mon, 7 Nov 2016 13:49:18 +0000 (13:49 +0000)
committerMatt Caswell <matt@openssl.org>
Mon, 7 Nov 2016 15:52:33 +0000 (15:52 +0000)
The record layer version field must be ignored in TLSv1.3, so we remove the
check when using that version.

Reviewed-by: Rich Salz <rsalz@openssl.org>
ssl/record/ssl3_record.c

index f160c06746c58d277d1a73197c5c7ec4aaaa3fee..181ebbbfb8eccaf8a4dae07577281697e81e77ac 100644 (file)
@@ -204,8 +204,9 @@ int ssl3_get_record(SSL *s)
                 rr[num_recs].rec_version = version;
                 n2s(p, rr[num_recs].length);
 
-                /* Lets check version */
-                if (!s->first_packet && version != s->version) {
+                /* Lets check version. In TLSv1.3 we ignore this field */
+                if (!s->first_packet && s->version != TLS1_3_VERSION
+                        && version != s->version) {
                     SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER);
                     if ((s->version & 0xFF00) == (version & 0xFF00)
                         && !s->enc_write_ctx && !s->write_hash) {