X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=ssl%2Frecord%2Fssl3_record.c;h=aea52fd7fae9f31a096e7347d9c6da3138adbc44;hp=4b36f49b6d5f34982abc4152b9efa5bc7fe876d3;hb=fc4c15faa462c1a4cbf002f214f6503e629e7a20;hpb=0b367d79552401c221affa406b978a5b33d79032 diff --git a/ssl/record/ssl3_record.c b/ssl/record/ssl3_record.c index 4b36f49b6d..aea52fd7fa 100644 --- a/ssl/record/ssl3_record.c +++ b/ssl/record/ssl3_record.c @@ -644,6 +644,15 @@ int ssl3_get_record(SSL *s) &thisrr->data[end], 1, s, s->msg_callback_arg); } + if (SSL_IS_TLS13(s) + && (thisrr->type == SSL3_RT_HANDSHAKE + || thisrr->type == SSL3_RT_ALERT) + && thisrr->length == 0) { + al = SSL_AD_UNEXPECTED_MESSAGE; + SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_BAD_LENGTH); + goto f_err; + } + if (thisrr->length > SSL3_RT_MAX_PLAIN_LENGTH) { al = SSL_AD_RECORD_OVERFLOW; SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_DATA_LENGTH_TOO_LONG);