agent: Clear bogus pinentry cache, when it causes an error.
authorNIIBE Yutaka <gniibe@fsij.org>
Mon, 28 Jan 2019 03:58:13 +0000 (12:58 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Mon, 28 Jan 2019 03:58:13 +0000 (12:58 +0900)
commit02a2633a7f0b7d91aa48ea615fb3a0edfd6ed6bb
tree189869c915432fd364de4a2a957061be9255a188
parent1c9251004592415b27988064ae20504dd1c37f57
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>
agent/agent.h
agent/call-pinentry.c
agent/findkey.c