mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
agent: Clear bogus pinentry cache, when it causes an error.
* agent/agent.h (PINENTRY_STATUS_*): Expose to public. (struct pin_entry_info_s): Add status. * agent/call-pinentry.c (agent_askpin): Clearing the ->status before the loop, let the assuan_transact set ->status. When failure with PINENTRY_STATUS_PASSWORD_FROM_CACHE, it returns soon. * agent/findkey.c (unprotect): Clear the pinentry cache, when it causes an error. -- GnuPG-bug-id: 4348 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
1c92510045
commit
02a2633a7f
3 changed files with 39 additions and 21 deletions
|
@ -632,7 +632,17 @@ unprotect (ctrl_t ctrl, const char *cache_nonce, const char *desc_text,
|
|||
pi->check_cb_arg = &arg;
|
||||
|
||||
rc = agent_askpin (ctrl, desc_text, NULL, NULL, pi, hexgrip, cache_mode);
|
||||
if (!rc)
|
||||
if (rc)
|
||||
{
|
||||
if ((pi->status & PINENTRY_STATUS_PASSWORD_FROM_CACHE))
|
||||
{
|
||||
log_error ("Clearing pinentry cache which caused error %s\n",
|
||||
gpg_strerror (rc));
|
||||
|
||||
agent_clear_passphrase (ctrl, hexgrip, cache_mode);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert (arg.unprotected_key);
|
||||
if (arg.change_required)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue