diff options
author | Werner Koch <[email protected]> | 2017-03-29 09:57:40 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-03-29 10:08:31 +0000 |
commit | afa86809087909a8ba2f9356588bf90cc923529c (patch) | |
tree | ff0941a7831c23a47f9dafa522b375b7cc00daa4 /g10/keyedit.c | |
parent | indent: Re-indent function free-packet. (diff) | |
download | gnupg-afa86809087909a8ba2f9356588bf90cc923529c.tar.gz gnupg-afa86809087909a8ba2f9356588bf90cc923529c.zip |
gpg: Extend free_packet to handle a packet parser context.
* g10/packet.h (struct parse_packet_ctx_s): Add fields LAST_PKT and
FREE_LAST_PKT.
(init_parse_packet): Clear them.
(deinit_parse_packet): New macro. Change all users if
init_parse_packet to also call this macro.
* g10/free-packet.c (free_packet): Add arg PARSECTX and handle shallow
packet copies in the context. Change all callers.
* g10/parse-packet.c (parse): Store certain packets in the parse
context.
--
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | g10/keyedit.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/g10/keyedit.c b/g10/keyedit.c index 76d188927..9a6112631 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -2467,7 +2467,8 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, init_packet (pkt); init_parse_packet (&parsectx, a); err = parse_packet (&parsectx, pkt); - iobuf_close (a); + deinit_parse_packet (&parsectx); + iobuf_close (a); iobuf_ioctl (NULL, IOBUF_IOCTL_INVALIDATE_CACHE, 0, (char *) fname); if (!err && pkt->pkttype != PKT_SECRET_KEY && pkt->pkttype != PKT_SECRET_SUBKEY) @@ -2477,7 +2478,7 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr, tty_printf (_("Error reading backup key from '%s': %s\n"), fname, gpg_strerror (err)); xfree (fname); - free_packet (pkt); + free_packet (pkt, NULL); xfree (pkt); break; } @@ -5008,7 +5009,7 @@ menu_expire (kbnode_t pub_keyblock, int force_mainkey, u32 newexpiration) newpkt = xmalloc_clear (sizeof *newpkt); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (node->pkt); + free_packet (node->pkt, NULL); xfree (node->pkt); node->pkt = newpkt; sub_pk = NULL; @@ -5114,7 +5115,7 @@ menu_changeusage (kbnode_t keyblock) newpkt = xmalloc_clear (sizeof *newpkt); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (node->pkt); + free_packet (node->pkt, NULL); xfree (node->pkt); node->pkt = newpkt; sub_pk = NULL; @@ -5213,7 +5214,7 @@ menu_backsign (KBNODE pub_keyblock) newpkt = xmalloc_clear (sizeof (*newpkt)); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (sig_pk->pkt); + free_packet (sig_pk->pkt, NULL); xfree (sig_pk->pkt); sig_pk->pkt = newpkt; @@ -5371,7 +5372,7 @@ menu_set_primary_uid (KBNODE pub_keyblock) newpkt = xmalloc_clear (sizeof *newpkt); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (node->pkt); + free_packet (node->pkt, NULL); xfree (node->pkt); node->pkt = newpkt; modified = 1; @@ -5460,7 +5461,7 @@ menu_set_preferences (KBNODE pub_keyblock) newpkt = xmalloc_clear (sizeof *newpkt); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (node->pkt); + free_packet (node->pkt, NULL); xfree (node->pkt); node->pkt = newpkt; modified = 1; @@ -5596,7 +5597,7 @@ menu_set_keyserver_url (const char *url, KBNODE pub_keyblock) newpkt = xmalloc_clear (sizeof *newpkt); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (node->pkt); + free_packet (node->pkt, NULL); xfree (node->pkt); node->pkt = newpkt; modified = 1; @@ -5797,7 +5798,7 @@ menu_set_notation (const char *string, KBNODE pub_keyblock) newpkt = xmalloc_clear (sizeof *newpkt); newpkt->pkttype = PKT_SIGNATURE; newpkt->pkt.signature = newsig; - free_packet (node->pkt); + free_packet (node->pkt, NULL); xfree (node->pkt); node->pkt = newpkt; modified = 1; |