Move decisions about whether to accept reneg into the state machine
authorMatt Caswell <matt@openssl.org>
Mon, 29 Jan 2018 14:19:52 +0000 (14:19 +0000)
committerMatt Caswell <matt@openssl.org>
Tue, 30 Jan 2018 11:28:12 +0000 (11:28 +0000)
commit3faa07b5829d6616679adc5ac2dbf34f8bfcc8b4
treef7b31844b19d4280f4990e06a679d6eccd89df78
parentbf01fbbf31a6a99e3eb60b70e05cd78d728421c7
Move decisions about whether to accept reneg into the state machine

If a server receives an unexpected ClientHello then we may or may not
accept it. Make sure all such decisions are made in the state machine
and not in the record layer. This also removes a disparity between the
TLS and the DTLS code. The TLS code was making this decision in the
record layer, while the DTLS code was making it later.

Finally it also solves a problem where a warning alert was being sent
during tls_setup_handshake() and the function was returning a failure
return code. This is problematic because it can be called from a
transition function - which we only allow fatal errors to occur in.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5190)
ssl/record/rec_layer_s3.c
ssl/statem/statem_lib.c
ssl/statem/statem_srvr.c