diff options
Diffstat (limited to 'agent/findkey.c')
-rw-r--r-- | agent/findkey.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/agent/findkey.c b/agent/findkey.c index 7fb938b35..af42d6ece 100644 --- a/agent/findkey.c +++ b/agent/findkey.c @@ -968,7 +968,7 @@ agent_key_from_file (ctrl_t ctrl, const char *cache_nonce, { gpg_error_t err; unsigned char *buf; - size_t len, buflen, erroff; + size_t len, erroff; gcry_sexp_t s_skey; nvc_t keymeta = NULL; char *desc_text_buffer = NULL; /* Used in case we extend DESC_TEXT. */ @@ -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; } |