gpg: Properly account for ring trust packets.
authorJustus Winter <justus@g10code.com>
Mon, 8 May 2017 12:24:00 +0000 (14:24 +0200)
committerJustus Winter <justus@g10code.com>
Mon, 8 May 2017 12:33:11 +0000 (14:33 +0200)
commit22739433e98be80e46fe7d01d52a9627c1aebaae
tree494ef5b580e88abf4242bca88a2689fc1cb4601e
parent692208fd6c1547cc7dd2062a1d1c9499bc0a8be4
gpg: Properly account for ring trust packets.

* g10/keyring.c (keyring_get_keyblock): Use the parser's packet count
instead of counting ourself.
* g10/packet.h (struct parse_packet_ctx_s): New field
'n_parsed_packets'.
(init_parse_packet): Initialize new field.
* g10/parse-packet.c (parse): Count packets.
--

The 'keyring' keystore depends on the number of packets for delete and
update operations.  With the rework of the ring trust packets, the
trust packets were no longer properly accounted for leading to keyring
corruptions.

The 'keybox' store was not affected.

GnuPG-bug-id: 3123
GnuPG-bug-id: 3135
GnuPG-bug-id: 3144
Fixes-commit: a8895c99a7d0750132477d80cd66caaf3a709113
Signed-off-by: Justus Winter <justus@g10code.com>
g10/keyring.c
g10/packet.h
g10/parse-packet.c