gpg: Fix possible double free of the card serialno.
authorWerner Koch <wk@gnupg.org>
Fri, 21 Jul 2017 15:48:40 +0000 (17:48 +0200)
committerWerner Koch <wk@gnupg.org>
Fri, 21 Jul 2017 15:49:10 +0000 (17:49 +0200)
* g10/free-packet.c (copy_public_key): Copy fields serialno and
updateurl.
--

The PK->serialno is used to get the version of the card to decide
whether it does support other algorithms than SHA-1.  This value is
cached but no deep copy was done when calling copy_public_key.

Bug detected by importing some public keys and then importing a secret
key which led to a double free.

Signed-off-by: Werner Koch <wk@gnupg.org>
g10/free-packet.c

index cd222a2..e15ad3f 100644 (file)
@@ -224,6 +224,12 @@ copy_public_key (PKT_public_key *d, PKT_public_key *s)
     }
   else
     d->revkey = NULL;
+
+  if (s->serialno)
+    d->serialno = xstrdup (s->serialno);
+  if (s->updateurl)
+    d->updateurl = xstrdup (s->updateurl);
+
   return d;
 }