- Fixed potential memory corruption on miscrafted client messages (found by Frama-C team at CEA LIST)
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index bbe8388..64012e5 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -880,6 +880,13 @@
/*
* Always compute the MAC (RFC4346, CBCTIME).
*/
+ if( ssl->in_msglen <= ssl->maclen + padlen )
+ {
+ SSL_DEBUG_MSG( 1, ( "msglen (%d) < maclen (%d) + padlen (%d)",
+ ssl->in_msglen, ssl->maclen, padlen ) );
+ return( POLARSSL_ERR_SSL_INVALID_MAC );
+ }
+
ssl->in_msglen -= ( ssl->maclen + padlen );
ssl->in_hdr[3] = (unsigned char)( ssl->in_msglen >> 8 );