diff options
author | Werner Koch <wk@gnupg.org> | 2020-01-15 11:51:52 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2020-01-16 14:44:28 +0100 |
commit | 3ccad75d76b9c17b9495c48df8dd4be46d3b3105 (patch) | |
tree | 3ebff03af547615494b94191c6e64afe5154433a | |
parent | gpg: Use "SCD KEYINFO" to get available card keys. (diff) | |
download | gnupg2-3ccad75d76b9c17b9495c48df8dd4be46d3b3105.tar.xz gnupg2-3ccad75d76b9c17b9495c48df8dd4be46d3b3105.zip |
gpg: Print better debug info in case of broken sig subpackets.
* g10/parse-packet.c (enum_sig_subpkt): Print a hexdump.
--
A test key for this is 02DF08F5FD356BF27F5F7B838921B5DCCD15A883 .
A key listing in verbose mode will now yield
gpg: DBG: buffer shorter than subpacket (10/9/25);\
dump: 19100d87e54973647cff
The error here is that the packet length is 0x19 but what follows is a
long keyid (subpacket 16) which is shorter. The debug output might be
helpful to better analyze broken signatures.
Signed-off-by: Werner Koch <wk@gnupg.org>
-rw-r--r-- | g10/parse-packet.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/g10/parse-packet.c b/g10/parse-packet.c index 2f92c1d2c..7c330ee43 100644 --- a/g10/parse-packet.c +++ b/g10/parse-packet.c @@ -1886,7 +1886,10 @@ enum_sig_subpkt (PKT_signature *sig, int want_hashed, sigsubpkttype_t reqtype, too_short: if (opt.verbose && !glo_ctrl.silence_parse_warnings) - log_info ("buffer shorter than subpacket\n"); + log_printhex (pktbuf->data, pktbuf->len > 16? 16 : pktbuf->len, + "buffer shorter than subpacket (%zu/%d/%zu); dump:", + pktbuf->len, buflen, n); + if (start) *start = -1; return NULL; |