From: Kurt Roeckx Date: Sat, 16 Apr 2016 21:08:56 +0000 (+0200) Subject: Check that we have enough padding characters. X-Git-Tag: OpenSSL_1_0_1t~4 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4159f311671cf3bac03815e5de44681eb758304a;p=oweals%2Fopenssl.git Check that we have enough padding characters. Reviewed-by: Emilia Käsper CVE-2016-2107 MR: #2572 --- diff --git a/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/evp/e_aes_cbc_hmac_sha1.c index d1f5928f62..1d598db359 100644 --- a/crypto/evp/e_aes_cbc_hmac_sha1.c +++ b/crypto/evp/e_aes_cbc_hmac_sha1.c @@ -59,6 +59,7 @@ # include # include # include "evp_locl.h" +# include "constant_time_locl.h" # ifndef EVP_CIPH_FLAG_AEAD_CIPHER # define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 @@ -286,6 +287,8 @@ static int aesni_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8); maxpad &= 255; + ret &= constant_time_ge(maxpad, pad); + inp_len = len - (SHA_DIGEST_LENGTH + pad + 1); mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1))); inp_len &= mask;