gpg: Make sure a user ID packet has always a terminating Nul in memory.
authorWerner Koch <wk@gnupg.org>
Fri, 1 Jul 2016 13:18:59 +0000 (15:18 +0200)
committerWerner Koch <wk@gnupg.org>
Fri, 1 Jul 2016 14:27:43 +0000 (16:27 +0200)
* g10/keygen.c (write_uid): Avoid overflow.
--

Also the actual length if the user ID is given by LEN, using NAME
diretcly is often more convenient.

g10/keygen.c
g10/packet.h

index 3a9a8e7..2b3d328 100644 (file)
@@ -202,7 +202,7 @@ write_uid( KBNODE root, const char *s )
     size_t n = strlen(s);
 
     pkt->pkttype = PKT_USER_ID;
-    pkt->pkt.user_id = xmalloc_clear( sizeof *pkt->pkt.user_id + n - 1 );
+    pkt->pkt.user_id = xmalloc_clear (sizeof *pkt->pkt.user_id + n);
     pkt->pkt.user_id->len = n;
     pkt->pkt.user_id->ref = 1;
     strcpy(pkt->pkt.user_id->name, s);
index 0ff28c8..a496c4b 100644 (file)
@@ -293,7 +293,7 @@ typedef struct
   } flags;
   /* The text contained in the user id packet, which is normally the
      name and email address of the key holder (See RFC 4880 5.11).
-     (Serialized.)  */
+     (Serialized.). For convenience an extra Nul is always appended.  */
   char name[1];
 } PKT_user_id;