Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Check that we have enough padding characters.
Reviewed-by: Emilia Käsper <emilia@openssl.org>
CVE-2016-2107
MR: #2572
- Loading branch information
Showing
with
6 additions
and
0 deletions.
-
+3
−0
crypto/evp/e_aes_cbc_hmac_sha1.c
-
+3
−0
crypto/evp/e_aes_cbc_hmac_sha256.c
|
@@ -60,6 +60,7 @@ |
|
|
# include <openssl/sha.h> |
|
|
# include <openssl/rand.h> |
|
|
# include "modes_lcl.h" |
|
|
# include "constant_time_locl.h" |
|
|
|
|
|
# ifndef EVP_CIPH_FLAG_AEAD_CIPHER |
|
|
# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 |
|
@@ -578,6 +579,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; |
|
|
|
@@ -60,6 +60,7 @@ |
|
|
# include <openssl/sha.h> |
|
|
# include <openssl/rand.h> |
|
|
# include "modes_lcl.h" |
|
|
# include "constant_time_locl.h" |
|
|
|
|
|
# ifndef EVP_CIPH_FLAG_AEAD_CIPHER |
|
|
# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 |
|
@@ -589,6 +590,8 @@ static int aesni_cbc_hmac_sha256_cipher(EVP_CIPHER_CTX *ctx, |
|
|
maxpad |= (255 - maxpad) >> (sizeof(maxpad) * 8 - 8); |
|
|
maxpad &= 255; |
|
|
|
|
|
ret &= constant_time_ge(maxpad, pad); |
|
|
|
|
|
inp_len = len - (SHA256_DIGEST_LENGTH + pad + 1); |
|
|
mask = (0 - ((inp_len - len) >> (sizeof(inp_len) * 8 - 1))); |
|
|
inp_len &= mask; |
|
|