81ea0bf538
When not offering to resume a session, the client populates s->session with a fresh SSL_SESSION before the ServerHello is processed and, in DTLS_ANY_VERSION, before the version is even determined. Don't create a fresh SSL_SESSION until we know we are doing a full handshake. This brings ssl3_send_client_hello closer to ssl23_client_hello in behavior. It also fixes ssl_version in the client in DTLS_ANY_VERSION. SSLv23_client_method is largely unchanged. If no session is offered, s->session continues to be NULL until the ServerHello is received. The one difference is that s->session isn't populated until the entire ServerHello is received, rather than just the first half, in the case of a fragmented ServerHello. Apart from info_callback, no external hooks get called between those points, so this shouldn't expose new missing NULL checks. The other client methods change significantly to match SSLv23_client_method's behavior. For TLS, any exposed missing NULL checks are also in SSLv23_client_method (and version-specific methods are already weird), so that should be safe. For DTLS, I've verified that accesses in d1_*.c either handle NULL or are after the ServerHello. Change-Id: Idcae6bd242480e28a57dbba76ce67f1ac1ae1d1d Reviewed-on: https://boringssl-review.googlesource.com/2404 Reviewed-by: Adam Langley <agl@google.com> |
||
---|---|---|
crypto | ||
doc | ||
include/openssl | ||
ssl | ||
tool | ||
util | ||
.clang-format | ||
.gitignore | ||
BUILDING | ||
CMakeLists.txt | ||
codereview.settings |