Tidy up ssl3_get_message slightly. Change-Id: Iccd86440bf8721098050fac220dc9bb80bbfc670 Reviewed-on: https://boringssl-review.googlesource.com/8983 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
diff --git a/ssl/s3_both.c b/ssl/s3_both.c index 9b0ebc9..8092eb9 100644 --- a/ssl/s3_both.c +++ b/ssl/s3_both.c
@@ -563,27 +563,24 @@ ssl_do_msg_callback(ssl, 0 /* read */, ssl->version, SSL3_RT_HANDSHAKE, ssl->init_buf->data, ssl->init_buf->length); + ssl->s3->tmp.message_type = ((const uint8_t *)ssl->init_buf->data)[0]; + ssl->init_msg = (uint8_t*)ssl->init_buf->data + 4; + ssl->init_num = ssl->init_buf->length - 4; + /* Ignore stray HelloRequest messages. Per RFC 5246, section 7.4.1.1, the * server may send HelloRequest at any time. */ - static const uint8_t kHelloRequest[4] = {SSL3_MT_HELLO_REQUEST, 0, 0, 0}; if (!ssl->server && - (!ssl->s3->have_version || - ssl3_protocol_version(ssl) < TLS1_3_VERSION) && - ssl->init_buf->length == sizeof(kHelloRequest) && - memcmp(kHelloRequest, ssl->init_buf->data, sizeof(kHelloRequest)) == 0) { + (!ssl->s3->have_version || ssl3_protocol_version(ssl) < TLS1_3_VERSION) && + ssl->s3->tmp.message_type == SSL3_MT_HELLO_REQUEST && + ssl->init_num == 0) { goto again; } - uint8_t actual_type = ((const uint8_t *)ssl->init_buf->data)[0]; - if (msg_type >= 0 && actual_type != msg_type) { + if (msg_type >= 0 && ssl->s3->tmp.message_type != msg_type) { ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE); OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_MESSAGE); return -1; } - ssl->s3->tmp.message_type = actual_type; - - ssl->init_msg = (uint8_t*)ssl->init_buf->data + 4; - ssl->init_num = ssl->init_buf->length - 4; /* Feed this message into MAC computation. */ if (hash_message == ssl_hash_message && !ssl3_hash_current_message(ssl)) {