aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2004-06-16 13:22:36 +0000
committerWerner Koch <[email protected]>2004-06-16 13:22:36 +0000
commitc604d59716aa7187c5602e0629075c8c4f6e92e7 (patch)
tree61d95c0526363eefe79e65d1b9d5d059cd3092dc
parent. (diff)
downloadgnupg-c604d59716aa7187c5602e0629075c8c4f6e92e7.tar.gz
gnupg-c604d59716aa7187c5602e0629075c8c4f6e92e7.zip
(copy_secret_key): Get last fix right.
-rw-r--r--g10/ChangeLog4
-rw-r--r--g10/free-packet.c14
2 files changed, 8 insertions, 10 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index cb73e2662..99a3d5ccd 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.
2004-06-01 David Shaw <[email protected]>
diff --git a/g10/free-packet.c b/g10/free-packet.c
index d5965808c..b9a41ab98 100644
--- a/g10/free-packet.c
+++ b/g10/free-packet.c
@@ -261,21 +261,15 @@ 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;