summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorGuido Vranken <guidovranken@gmail.com>2018-06-11 19:38:54 +0200
committerMatt Caswell <matt@openssl.org>2018-06-12 10:30:14 +0100
commit3984ef0b72831da8b3ece4745cac4f8575b19098 (patch)
tree2df9deb375e98a8def86259202835e9b9573bfa2 /crypto
parentbd45a8d1ef338027e6892a7c886a373a4fafbf7d (diff)
Reject excessively large primes in DH key generation.
CVE-2018-0732 Signed-off-by: Guido Vranken <guidovranken@gmail.com> (cherry picked from commit 91f7361f47b082ae61ffe1a7b17bb2adf213c7fe) Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/6457)
Diffstat (limited to 'crypto')
-rw-r--r--crypto/dh/dh_key.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/crypto/dh/dh_key.c b/crypto/dh/dh_key.c
index 387558f146..f235e0d682 100644
--- a/crypto/dh/dh_key.c
+++ b/crypto/dh/dh_key.c
@@ -130,10 +130,15 @@ static int generate_key(DH *dh)
int ok = 0;
int generate_new_key = 0;
unsigned l;
- BN_CTX *ctx;
+ BN_CTX *ctx = NULL;
BN_MONT_CTX *mont = NULL;
BIGNUM *pub_key = NULL, *priv_key = NULL;
+ if (BN_num_bits(dh->p) > OPENSSL_DH_MAX_MODULUS_BITS) {
+ DHerr(DH_F_GENERATE_KEY, DH_R_MODULUS_TOO_LARGE);
+ return 0;
+ }
+
ctx = BN_CTX_new();
if (ctx == NULL)
goto err;