From e9c4c8ac74806b9a7a8ebb98fe316839d641ae0d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 16 Jun 2004 13:24:01 +0000 Subject: [PATCH] (copy_secret_key): Get last fix right. --- g10/ChangeLog | 4 ++++ g10/free-packet.c | 15 +++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/g10/ChangeLog b/g10/ChangeLog index 8e7b966f9..7333d138d 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,7 @@ +2004-06-16 Werner Koch + + * free-packet.c (copy_secret_key): Get last fix right. + 2004-06-16 Werner Koch * free-packet.c (copy_secret_key): Fixed memory leak when D is not diff --git a/g10/free-packet.c b/g10/free-packet.c index f8d86fe40..7a99187ee 100644 --- a/g10/free-packet.c +++ b/g10/free-packet.c @@ -262,22 +262,17 @@ copy_secret_key( PKT_secret_key *d, PKT_secret_key *s ) if( !d ) d = m_alloc(sizeof *d); + else + release_secret_key_parts (d); memcpy( d, s, sizeof *d ); n = pubkey_get_nskey( s->pubkey_algo ); if( !n ) - { - if (d->skey[0]) - mpi_free (d->skey[0]); - d->skey[0] = mpi_copy(s->skey[0]); - } + d->skey[0] = mpi_copy(s->skey[0]); else { for(i=0; i < n; i++ ) - { - if (d->skey[i]) - mpi_free (d->skey[i]); - d->skey[i] = mpi_copy( s->skey[i] ); - } + d->skey[i] = mpi_copy( s->skey[i] ); } + return d; }