From 9cc3e8f1f2b9e9c36a2f61e914bc9711c35568b6 Mon Sep 17 00:00:00 2001 From: Emilia Kasper Date: Tue, 18 Aug 2015 19:01:51 +0200 Subject: [PATCH] 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 --- ssl/s3_srvr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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);