diff options
Diffstat (limited to 'cipher/primegen.c')
-rw-r--r-- | cipher/primegen.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/cipher/primegen.c b/cipher/primegen.c index da8b01f5..9489f0e8 100644 --- a/cipher/primegen.c +++ b/cipher/primegen.c @@ -190,6 +190,7 @@ _gcry_generate_elg_prime( int mode, unsigned pbits, unsigned qbits, count1 = 0; qbits++; progress('>'); + mpi_free (q); q = gen_prime( qbits, 0, 0 ); goto next_try; } @@ -201,6 +202,7 @@ _gcry_generate_elg_prime( int mode, unsigned pbits, unsigned qbits, count2 = 0; qbits--; progress('<'); + mpi_free (q); q = gen_prime( qbits, 0, 0 ); goto next_try; } @@ -227,14 +229,14 @@ _gcry_generate_elg_prime( int mode, unsigned pbits, unsigned qbits, if( ret_factors ) { /* caller wants the factors */ *ret_factors = gcry_xcalloc( n+2 , sizeof **ret_factors); + i = 0; if( mode == 1 ) { - i = 0; (*ret_factors)[i++] = mpi_copy( q_factor ); for(; i <= n; i++ ) (*ret_factors)[i] = mpi_copy( factors[i] ); } else { - for(i=0; i < n; i++ ) + for(; i < n; i++ ) (*ret_factors)[i] = mpi_copy( factors[i] ); } } @@ -284,6 +286,7 @@ _gcry_generate_elg_prime( int mode, unsigned pbits, unsigned qbits, gcry_free( pool ); gcry_free(perms); mpi_free(val_2); + mpi_free (q); return prime; } |