aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command-ssh.c
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2022-05-20 06:51:47 +0000
committerNIIBE Yutaka <[email protected]>2022-05-20 06:51:47 +0000
commit1b0c4c2778249a6fe25a2c517d9fc05a1f162f1c (patch)
tree74408b1ecfbd0d46138af9ee2a0d7997ca5576b6 /agent/command-ssh.c
parentagent: Factor out handling scanning over ssh keys. (diff)
downloadgnupg-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.c8
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);