diff options
-rw-r--r-- | cipher/ChangeLog | 2 | ||||
-rw-r--r-- | cipher/primegen.c | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/cipher/ChangeLog b/cipher/ChangeLog index 10ff54df..af5f114e 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -8,7 +8,7 @@ * primegen.c (prime_generate_internal): New arg ALL_FACTORS. Changed all callers. (gcry_prime_generate): Make the factors arg optional. Request - all_factors. + all_factors. Make sure PRIME is set to NULL even on error. (gcry_prime_group_generator): New. (gcry_prime_release_factors): New. diff --git a/cipher/primegen.c b/cipher/primegen.c index cc082e52..ed3420d9 100644 --- a/cipher/primegen.c +++ b/cipher/primegen.c @@ -834,6 +834,10 @@ gcry_prime_generate (gcry_mpi_t *prime, unsigned int prime_bits, gcry_mpi_t prime_generated = NULL; unsigned int mode = 0; + if (!prime) + return gpg_error (GPG_ERR_INV_ARG); + *prime = NULL; + if (flags & GCRY_PRIME_FLAG_SPECIAL_FACTOR) mode = 1; @@ -907,6 +911,7 @@ gcry_prime_group_generator (gcry_mpi_t *r_g, if (!factors || !r_g || !prime) return gpg_error (GPG_ERR_INV_ARG); + *r_g = NULL; for (n=0; factors[n]; n++) ; |