diff options
Diffstat (limited to 'cipher')
-rw-r--r-- | cipher/ChangeLog | 5 | ||||
-rw-r--r-- | cipher/primegen.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/cipher/ChangeLog b/cipher/ChangeLog index 778517628..ede3b892b 100644 --- a/cipher/ChangeLog +++ b/cipher/ChangeLog @@ -1,3 +1,8 @@ +2001-04-02 Werner Koch <[email protected]> + + * primegen.c (generate_elg_prime): I was not initialized for mode + != 1. Freed q at 3 places. Thanks to Tommi Komulainen. + 2001-03-28 Werner Koch <[email protected]> * md5.c (md5_final): Fixed calculation of hashed length. Thanks diff --git a/cipher/primegen.c b/cipher/primegen.c index b6c569de7..7eaf6641f 100644 --- a/cipher/primegen.c +++ b/cipher/primegen.c @@ -190,6 +190,7 @@ 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 @@ 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,8 +229,8 @@ generate_elg_prime( int mode, unsigned pbits, unsigned qbits, if( ret_factors ) { /* caller wants the factors */ *ret_factors = m_alloc_clear( (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] ); @@ -283,6 +285,7 @@ generate_elg_prime( int mode, unsigned pbits, unsigned qbits, m_free( pool ); m_free(perms); mpi_free(val_2); + mpi_free(q); return prime; } |