aboutsummaryrefslogtreecommitdiffstats
path: root/g10/free-packet.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/free-packet.c')
-rw-r--r--g10/free-packet.c14
1 files changed, 4 insertions, 10 deletions
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;