=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/moduli.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- src/usr.bin/ssh/moduli.c 2017/12/08 03:45:52 1.32 +++ src/usr.bin/ssh/moduli.c 2019/01/20 02:01:59 1.33 @@ -1,4 +1,4 @@ -/* $OpenBSD: moduli.c,v 1.32 2017/12/08 03:45:52 deraadt Exp $ */ +/* $OpenBSD: moduli.c,v 1.33 2019/01/20 02:01:59 tb Exp $ */ /* * Copyright 1994 Phil Karn * Copyright 1996-1998, 2003 William Allen Simpson @@ -576,7 +576,7 @@ u_int32_t generator_known, in_tests, in_tries, in_type, in_size; unsigned long last_processed = 0, end_lineno; time_t time_start, time_stop; - int res; + int res, is_prime; if (trials < TRIAL_MINIMUM) { error("Minimum primality trials is %d", TRIAL_MINIMUM); @@ -747,7 +747,10 @@ * that p is also prime. A single pass will weed out the * vast majority of composite q's. */ - if (BN_is_prime_ex(q, 1, ctx, NULL) <= 0) { + is_prime = BN_is_prime_ex(q, 1, ctx, NULL); + if (is_prime < 0) + fatal("BN_is_prime_ex failed"); + if (is_prime == 0) { debug("%10u: q failed first possible prime test", count_in); continue; @@ -760,14 +763,20 @@ * will show up on the first Rabin-Miller iteration so it * doesn't hurt to specify a high iteration count. */ - if (!BN_is_prime_ex(p, trials, ctx, NULL)) { + is_prime = BN_is_prime_ex(p, trials, ctx, NULL); + if (is_prime < 0) + fatal("BN_is_prime_ex failed"); + if (is_prime == 0) { debug("%10u: p is not prime", count_in); continue; } debug("%10u: p is almost certainly prime", count_in); /* recheck q more rigorously */ - if (!BN_is_prime_ex(q, trials - 1, ctx, NULL)) { + is_prime = BN_is_prime_ex(q, trials - 1, ctx, NULL); + if (is_prime < 0) + fatal("BN_is_prime_ex failed"); + if (is_prime == 0) { debug("%10u: q is not prime", count_in); continue; }