summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cipher/ChangeLog2
-rw-r--r--cipher/primegen.c5
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++)
;