diff options
author | 2001-03-28 22:04:57 +0000 | |
---|---|---|
committer | 2001-03-28 22:04:57 +0000 | |
commit | e56ea8ee39e903e35a90e8e00a7cbd24e2c03a2a (patch) | |
tree | 67db538ccbe0613a73051881ce579e597e134ef0 /usr.bin/ssh/dh.c | |
parent | - add NOT_FOR_ARCHS (diff) | |
download | wireguard-openbsd-e56ea8ee39e903e35a90e8e00a7cbd24e2c03a2a.tar.xz wireguard-openbsd-e56ea8ee39e903e35a90e8e00a7cbd24e2c03a2a.zip |
more sanity checking on primes file
Diffstat (limited to 'usr.bin/ssh/dh.c')
-rw-r--r-- | usr.bin/ssh/dh.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/usr.bin/ssh/dh.c b/usr.bin/ssh/dh.c index 5f441ee1c81..636758fa8bb 100644 --- a/usr.bin/ssh/dh.c +++ b/usr.bin/ssh/dh.c @@ -23,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: dh.c,v 1.9 2001/03/27 17:46:49 provos Exp $"); +RCSID("$OpenBSD: dh.c,v 1.10 2001/03/28 22:04:57 provos Exp $"); #include "xmalloc.h" @@ -79,18 +79,21 @@ parse_prime(int linenum, char *line, struct dhgroup *dhg) goto fail; dhg->g = BN_new(); - if (BN_hex2bn(&dhg->g, gen) < 0) { - BN_free(dhg->g); - goto fail; - } dhg->p = BN_new(); - if (BN_hex2bn(&dhg->p, prime) < 0) { - BN_free(dhg->g); - BN_free(dhg->p); - goto fail; - } + if (BN_hex2bn(&dhg->g, gen) < 0) + goto failclean; + + if (BN_hex2bn(&dhg->p, prime) < 0) + goto failclean; + + if (BN_num_bits(dhg->p) != dhg->size) + goto failclean; return (1); + + failclean: + BN_free(dhg->g); + BN_free(dhg->p); fail: error("Bad prime description in line %d", linenum); return (0); |