From: Dr. Stephen Henson Date: Thu, 27 Oct 2011 13:06:26 +0000 (+0000) Subject: PR: 2628 X-Git-Tag: OpenSSL_0_9_8s~18 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8794569a08d0c16515ec65ca08491597c17867db;p=oweals%2Fopenssl.git PR: 2628 Submitted by: Robin Seggelmann Reviewed by: steve Send alert instead of assertion failure for incorrectly formatted DTLS fragments. --- diff --git a/ssl/d1_both.c b/ssl/d1_both.c index 1c4158d36d..85f4d83efe 100644 --- a/ssl/d1_both.c +++ b/ssl/d1_both.c @@ -793,7 +793,13 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) *ok = 0; return i; } - OPENSSL_assert(i == DTLS1_HM_HEADER_LENGTH); + /* Handshake fails if message header is incomplete */ + if (i != DTLS1_HM_HEADER_LENGTH) + { + al=SSL_AD_UNEXPECTED_MESSAGE; + SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL_R_UNEXPECTED_MESSAGE); + goto f_err; + } /* parse the message fragment header */ dtls1_get_message_header(wire, &msg_hdr); @@ -865,7 +871,12 @@ dtls1_get_message_fragment(SSL *s, int st1, int stn, long max, int *ok) /* XDTLS: an incorrectly formatted fragment should cause the * handshake to fail */ - OPENSSL_assert(i == (int)frag_len); + if (i != (int)frag_len) + { + al=SSL3_AD_ILLEGAL_PARAMETER; + SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL3_AD_ILLEGAL_PARAMETER); + goto f_err; + } *ok = 1;