diff options
author | NIIBE Yutaka <[email protected]> | 2022-05-20 06:51:47 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2022-05-20 06:51:47 +0000 |
commit | 1b0c4c2778249a6fe25a2c517d9fc05a1f162f1c (patch) | |
tree | 74408b1ecfbd0d46138af9ee2a0d7997ca5576b6 /agent/command-ssh.c | |
parent | agent: Factor out handling scanning over ssh keys. (diff) | |
download | gnupg-1b0c4c2778249a6fe25a2c517d9fc05a1f162f1c.tar.gz gnupg-1b0c4c2778249a6fe25a2c517d9fc05a1f162f1c.zip |
agent: Fix a bug accessing after release when opt.verbose.
* agent/command-ssh.c (ssh_handler_request_identities): Don't release
KEY_PUBLIC too early.
--
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'agent/command-ssh.c')
-rw-r--r-- | agent/command-ssh.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/agent/command-ssh.c b/agent/command-ssh.c index 0ac3e875c..e5c50a63e 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -2511,7 +2511,6 @@ ssh_handler_request_identities (ctrl_t ctrl, { u32 key_counter; estream_t key_blobs; - gcry_sexp_t key_public; gpg_error_t err; int ret; gpg_error_t ret_err; @@ -2520,7 +2519,6 @@ ssh_handler_request_identities (ctrl_t ctrl, /* Prepare buffer stream. */ - key_public = NULL; key_counter = 0; key_blobs = es_fopenmem (0, "r+b"); @@ -2560,13 +2558,12 @@ ssh_handler_request_identities (ctrl_t ctrl, for (keyinfo = keyinfo_list; keyinfo; keyinfo = keyinfo->next) { char *cardsn; + gcry_sexp_t key_public = NULL; if (card_key_available (ctrl, keyinfo, &key_public, &cardsn)) continue; err = ssh_send_key_public (key_blobs, key_public, cardsn); - gcry_sexp_release (key_public); - key_public = NULL; xfree (cardsn); if (err) { @@ -2582,11 +2579,14 @@ ssh_handler_request_identities (ctrl_t ctrl, else { agent_card_free_keyinfo (keyinfo_list); + gcry_sexp_release (key_public); goto out; } } else key_counter++; + + gcry_sexp_release (key_public); } agent_card_free_keyinfo (keyinfo_list); |