diff options
author | Werner Koch <[email protected]> | 2019-02-07 15:28:03 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2019-02-07 15:28:03 +0000 |
commit | df6ba6dfd235fddb7645bc16573da1a6a7e6b49d (patch) | |
tree | 7dbba1063aabe8e99539a476a0a6342b20c3ec8d | |
parent | scd: Store a new PIV public key in the certificate DO. (diff) | |
download | gnupg-df6ba6dfd235fddb7645bc16573da1a6a7e6b49d.tar.gz gnupg-df6ba6dfd235fddb7645bc16573da1a6a7e6b49d.zip |
card: Fix a NULL-ptr deref in key listings.
* tools/card-tool-keys.c (get_matching_keys): Fix segv.
* tools/gpg-card-tool.c (main): Init info.
Signed-off-by: Werner Koch <[email protected]>
-rw-r--r-- | tools/card-tool-keys.c | 9 | ||||
-rw-r--r-- | tools/gpg-card-tool.c | 4 |
2 files changed, 8 insertions, 5 deletions
diff --git a/tools/card-tool-keys.c b/tools/card-tool-keys.c index e9edf9818..4e057ad94 100644 --- a/tools/card-tool-keys.c +++ b/tools/card-tool-keys.c @@ -214,9 +214,12 @@ get_matching_keys (const unsigned char *keygrip, int protocol, err = get_matching_keys (keygrip, GNUPG_PROTOCOL_OPENPGP, &kb); if (!err || gpg_err_code (err) == GPG_ERR_NO_PUBKEY) { - *keyblock_tail = kb; - keyblock_tail = &kb->next; - kb = NULL; + if (!err) + { + *keyblock_tail = kb; + keyblock_tail = &kb->next; + kb = NULL; + } err = get_matching_keys (keygrip, GNUPG_PROTOCOL_CMS, &kb); if (!err) { diff --git a/tools/gpg-card-tool.c b/tools/gpg-card-tool.c index 917013247..0dbf2b224 100644 --- a/tools/gpg-card-tool.c +++ b/tools/gpg-card-tool.c @@ -309,7 +309,7 @@ main (int argc, char **argv) } else { - struct card_info_s info_buffer; + struct card_info_s info_buffer = { 0 }; card_info_t info = &info_buffer; err = 0; @@ -2968,7 +2968,7 @@ interactive_loop (void) int redisplay = 1; /* Whether to redisplay the main info. */ int allow_admin = 0; /* Whether admin commands are allowed. */ char *help_arg = NULL; /* Argument of the HELP command. */ - struct card_info_s info_buffer; + struct card_info_s info_buffer = { 0 }; card_info_t info = &info_buffer; char *p; int i; |