Fix ssl/s3_enc.c, ssl/t1_enc.c and ssl/s3_pkt.c so that we don't
reveal whether illegal block cipher padding was found or a MAC verification error occured. In ssl/s2_pkt.c, verify that the purported number of padding bytes is in the legal range.
This commit is contained in:
11
ssl/s3_enc.c
11
ssl/s3_enc.c
@@ -381,8 +381,8 @@ int ssl3_enc(SSL *s, int send)
|
||||
if (l == 0 || l%bs != 0)
|
||||
{
|
||||
SSLerr(SSL_F_SSL3_ENC,SSL_R_BLOCK_CIPHER_PAD_IS_WRONG);
|
||||
ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECRYPT_ERROR);
|
||||
return(0);
|
||||
ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECRYPTION_FAILED);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -395,9 +395,10 @@ int ssl3_enc(SSL *s, int send)
|
||||
* padding bytes (except that last) are arbitrary */
|
||||
if (i > bs)
|
||||
{
|
||||
SSLerr(SSL_F_SSL3_ENC,SSL_R_BLOCK_CIPHER_PAD_IS_WRONG);
|
||||
ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_DECRYPT_ERROR);
|
||||
return(0);
|
||||
/* Incorrect padding. SSLerr() and ssl3_alert are done
|
||||
* by caller: we don't want to reveal whether this is
|
||||
* a decryption error or a MAC verification failure. */
|
||||
return -1;
|
||||
}
|
||||
rec->length-=i;
|
||||
}
|
||||
|
Reference in New Issue
Block a user