diff options
Diffstat (limited to 'g10/free-packet.c')
-rw-r--r-- | g10/free-packet.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/g10/free-packet.c b/g10/free-packet.c index 89a67eb1f..d5965808c 100644 --- a/g10/free-packet.c +++ b/g10/free-packet.c @@ -264,11 +264,20 @@ copy_secret_key( PKT_secret_key *d, PKT_secret_key *s ) 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]); + } else { for(i=0; i < n; i++ ) + { + if (d->skey[i]) + mpi_free (d->skey[i]); d->skey[i] = mpi_copy( s->skey[i] ); + } } + return d; } |