aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog4
-rw-r--r--g10/free-packet.c15
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,5 +1,9 @@
2004-06-16 Werner Koch <[email protected]>
+ * free-packet.c (copy_secret_key): Get last fix right.
+
+2004-06-16 Werner Koch <[email protected]>
+
* free-packet.c (copy_secret_key): Fixed memory leak when D is not
NULL.
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;
}