From: Matt Caswell Date: Tue, 30 Jun 2015 10:30:44 +0000 (+0100) Subject: Fix ssl3_read_bytes handshake fragment bug X-Git-Tag: OpenSSL_1_1_0-pre1~854 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e9f6b9a1a5ba9feaeeef88d9f45508996ce43468;p=oweals%2Fopenssl.git Fix ssl3_read_bytes handshake fragment bug The move of CCS into the state machine introduced a bug in ssl3_read_bytes. The value of |recvd_type| was not being set if we are satisfying the request from handshake fragment storage. This can occur, for example, with renegotiation and causes the handshake to fail. Reviewed-by: Tim Hudson --- diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c index 6feba42518..8a9e30302d 100644 --- a/ssl/record/rec_layer_s3.c +++ b/ssl/record/rec_layer_s3.c @@ -1012,6 +1012,10 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf, /* move any remaining fragment bytes: */ for (k = 0; k < s->rlayer.handshake_fragment_len; k++) s->rlayer.handshake_fragment[k] = *src++; + + if (recvd_type != NULL) + *recvd_type = SSL3_RT_HANDSHAKE; + return n; }