Commit c35e9669 authored by Matt Caswell's avatar Matt Caswell
Browse files

Don't change a session once its in the cache



Sessions should be immutable once they are in the cache because they could
be shared with other threads. If you change them then this can cause
corruptions and races

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6561)
parent 3445872e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -3796,10 +3796,11 @@ int tls_construct_new_session_ticket(SSL *s, WPACKET *pkt)
            cb(s, SSL_CB_HANDSHAKE_START, 1);
        }
        /*
         * If we already sent one NewSessionTicket then we need to take a copy
         * of it and create a new session from it.
         * If we already sent one NewSessionTicket, or we resumed then
         * s->session may already be in a cache and so we must not modify it.
         * Instead we need to take a copy of it and modify that.
         */
        if (s->sent_tickets != 0) {
        if (s->sent_tickets != 0 || s->hit) {
            SSL_SESSION *new_sess = ssl_session_dup(s->session, 0);

            if (new_sess == NULL) {