Fix a race condition in supported groups handling
authorMatt Caswell <matt@openssl.org>
Fri, 14 Jun 2019 11:46:13 +0000 (12:46 +0100)
committerMatt Caswell <matt@openssl.org>
Tue, 18 Jun 2019 12:36:25 +0000 (13:36 +0100)
commit45436e611b3e11c948ea9f3273df971c9bb4c122
tree7375c0044906ae4c519f1614c233aa06003e3f44
parente7a4682d0b347f0dfba629f4601a28801e54ad67
Fix a race condition in supported groups handling

In TLSv1.3 the supported groups can be negotiated each time a handshake
occurs, regardless of whether we are resuming or not. We should not store
the supported groups information in the session because session objects
can be shared between multiple threads and we can end up with race
conditions. For most users this won't be seen because, by default, we
use stateless tickets in TLSv1.3 which don't get shared. However if you
use SSL_OP_NO_TICKET (to get stateful tickets in TLSv1.3) then this can
happen.

The answer is to move the supported the supported group information into
the SSL object instead.

Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/9162)
ssl/s3_lib.c
ssl/ssl_lib.c
ssl/ssl_locl.h
ssl/ssl_sess.c
ssl/statem/extensions_srvr.c