aboutsummaryrefslogtreecommitdiffstats
path: root/g10
diff options
context:
space:
mode:
Diffstat (limited to 'g10')
-rw-r--r--g10/ChangeLog4
-rw-r--r--g10/free-packet.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 822150399..cb73e2662 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,7 @@
+2004-06-16 Werner Koch <[email protected]>
+
+ * free-packet.c (copy_secret_key): Fixed memory leak.
+
2004-06-01 David Shaw <[email protected]>
* g10.c (main): Alias --charset as --display-charset to help avoid
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;
}