Fix SSLv3 handling of SHA-384 suites

Fixes memory corruption, introduced in
a5bdfcd (Relax some SHA2 ciphersuite's version requirements)
This commit is contained in:
Manuel Pégourié-Gonnard 2013-12-17 10:17:08 +01:00
parent e1b665e1aa
commit c72ac7c3ef
2 changed files with 4 additions and 2 deletions

View file

@ -471,8 +471,8 @@ struct _ssl_transform
#if defined(POLARSSL_SSL_PROTO_SSL3) #if defined(POLARSSL_SSL_PROTO_SSL3)
/* Needed only for SSL v3.0 secret */ /* Needed only for SSL v3.0 secret */
unsigned char mac_enc[32]; /*!< SSL v3.0 secret (enc) */ unsigned char mac_enc[48]; /*!< SSL v3.0 secret (enc) */
unsigned char mac_dec[32]; /*!< SSL v3.0 secret (dec) */ unsigned char mac_dec[48]; /*!< SSL v3.0 secret (dec) */
#endif /* POLARSSL_SSL_PROTO_SSL3 */ #endif /* POLARSSL_SSL_PROTO_SSL3 */
md_context_t md_ctx_enc; /*!< MAC (encryption) */ md_context_t md_ctx_enc; /*!< MAC (encryption) */

View file

@ -941,6 +941,8 @@ static void ssl_mac( md_context_t *md_ctx, unsigned char *secret,
padlen = 40; padlen = 40;
else if( md_type == POLARSSL_MD_SHA256 ) else if( md_type == POLARSSL_MD_SHA256 )
padlen = 32; padlen = 32;
else if( md_type == POLARSSL_MD_SHA384 )
padlen = 16;
memcpy( header, ctr, 8 ); memcpy( header, ctr, 8 );
header[ 8] = (unsigned char) type; header[ 8] = (unsigned char) type;