From: David Benjamin Date: Sun, 6 Mar 2016 00:35:52 +0000 (-0500) Subject: The NewSessionTicket message is not optional. X-Git-Tag: OpenSSL_1_1_0-pre6~847 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c45d6b2b0dc9a0b191fc3dcaad8035addd1589e6;p=openssl The NewSessionTicket message is not optional. Per RFC 4507, section 3.3: This message [NewSessionTicket] MUST be sent if the server included a SessionTicket extension in the ServerHello. This message MUST NOT be sent if the server did not include a SessionTicket extension in the ServerHello. The presence of the NewSessionTicket message should be determined entirely from the ServerHello without probing. RT#4389 Reviewed-by: Emilia Käsper Reviewed-by: Matt Caswell --- diff --git a/ssl/statem/statem_clnt.c b/ssl/statem/statem_clnt.c index 4ede88ea2b..8da3e9b622 100644 --- a/ssl/statem/statem_clnt.c +++ b/ssl/statem/statem_clnt.c @@ -341,9 +341,11 @@ int ossl_statem_client_read_transition(SSL *s, int mt) break; case TLS_ST_CW_FINISHED: - if (mt == SSL3_MT_NEWSESSION_TICKET && s->tlsext_ticket_expected) { - st->hand_state = TLS_ST_CR_SESSION_TICKET; - return 1; + if (s->tlsext_ticket_expected) { + if (mt == SSL3_MT_NEWSESSION_TICKET) { + st->hand_state = TLS_ST_CR_SESSION_TICKET; + return 1; + } } else if (mt == SSL3_MT_CHANGE_CIPHER_SPEC) { st->hand_state = TLS_ST_CR_CHANGE; return 1;