(copy_secret_key): Get last fix right.
authorWerner Koch <wk@gnupg.org>
Wed, 16 Jun 2004 13:24:01 +0000 (13:24 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 16 Jun 2004 13:24:01 +0000 (13:24 +0000)
g10/ChangeLog
g10/free-packet.c

index 8e7b966..7333d13 100644 (file)
@@ -1,5 +1,9 @@
 2004-06-16  Werner Koch  <wk@gnupg.org>
 
+       * free-packet.c (copy_secret_key): Get last fix right.
+
+2004-06-16  Werner Koch  <wk@gnupg.org>
+
        * free-packet.c (copy_secret_key): Fixed memory leak when D is not
        NULL.
 
index f8d86fe..7a99187 100644 (file)
@@ -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;
 }