From: Emilia Kasper Date: Tue, 18 Aug 2015 17:01:51 +0000 (+0200) Subject: Fix SSLv2-compatible ClientHello processing. X-Git-Tag: OpenSSL_1_1_0-pre1~777 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=9cc3e8f1f2b9e9c36a2f61e914bc9711c35568b6 Fix SSLv2-compatible ClientHello processing. If the client challenge is less than 32 bytes, it is padded with leading - not trailing - zero bytes. Reviewed-by: Matt Caswell --- diff --git a/ssl/s3_srvr.c b/ssl/s3_srvr.c index 8bdb082999..2d15c63b6b 100644 --- a/ssl/s3_srvr.c +++ b/ssl/s3_srvr.c @@ -1057,7 +1057,9 @@ int ssl3_get_client_hello(SSL *s) /* Load the client random */ i = (cl > SSL3_RANDOM_SIZE) ? SSL3_RANDOM_SIZE : cl; memset(s->s3->client_random, 0, SSL3_RANDOM_SIZE); - if (!PACKET_peek_copy_bytes(&pkt, s->s3->client_random, i) + if (!PACKET_peek_copy_bytes(&pkt, + s->s3->client_random + SSL3_RANDOM_SIZE - i, + i) || !PACKET_forward(&pkt, cl) || PACKET_remaining(&pkt) != 0) { SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_RECORD_LENGTH_MISMATCH);