aboutsummaryrefslogtreecommitdiffstats
path: root/agent/findkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/findkey.c')
-rw-r--r--agent/findkey.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/agent/findkey.c b/agent/findkey.c
index 11746f571..be5e1ea95 100644
--- a/agent/findkey.c
+++ b/agent/findkey.c
@@ -1117,10 +1117,10 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce,
return err;
}
- buflen = gcry_sexp_canon_len (buf, 0, NULL, NULL);
- err = gcry_sexp_sscan (&s_skey, &erroff, (char*)buf, buflen);
- wipememory (buf, buflen);
+ err = sexp_sscan_private_key (result, &erroff, buf);
xfree (buf);
+ nvc_release (keymeta);
+ xfree (desc_text_buffer);
if (err)
{
log_error ("failed to build S-Exp (off=%u): %s\n",
@@ -1130,15 +1130,9 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce,
xfree (*r_passphrase);
*r_passphrase = NULL;
}
- nvc_release (keymeta);
- xfree (desc_text_buffer);
- return err;
}
- *result = s_skey;
- nvc_release (keymeta);
- xfree (desc_text_buffer);
- return 0;
+ return err;
}