mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-17 15:44:34 +02:00
agent: Improve error reporting from Pinentry.
* agent/call-pinentry.c (unlock_pinentry): Add error logging. Map error source of uncommon errors to Pinentry. -- With this change it is possible to detect whether an error like GPG_ERR_ASS_INV_RESPONSE has its origin in a call to Pinentry or comes from another part of gpg-agent. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
7b5b52f326
commit
efde50f92a
@ -133,6 +133,34 @@ unlock_pinentry (int rc)
|
|||||||
assuan_context_t ctx = entry_ctx;
|
assuan_context_t ctx = entry_ctx;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
if (rc)
|
||||||
|
{
|
||||||
|
if (DBG_ASSUAN)
|
||||||
|
log_debug ("error calling pinentry: %s <%s>\n",
|
||||||
|
gpg_strerror (rc), gpg_strsource (rc));
|
||||||
|
|
||||||
|
/* Change the source of the error to pinentry so that the final
|
||||||
|
consumer of the error code knows that the problem is with
|
||||||
|
pinentry. For backward compatibility we do not do that for
|
||||||
|
some common error codes. */
|
||||||
|
switch (gpg_err_code (rc))
|
||||||
|
{
|
||||||
|
case GPG_ERR_NO_PIN_ENTRY:
|
||||||
|
case GPG_ERR_CANCELED:
|
||||||
|
case GPG_ERR_FULLY_CANCELED:
|
||||||
|
case GPG_ERR_ASS_UNKNOWN_INQUIRE:
|
||||||
|
case GPG_ERR_ASS_TOO_MUCH_DATA:
|
||||||
|
case GPG_ERR_NO_PASSPHRASE:
|
||||||
|
case GPG_ERR_BAD_PASSPHRASE:
|
||||||
|
case GPG_ERR_BAD_PIN:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
rc = gpg_err_make (GPG_ERR_SOURCE_PINENTRY, gpg_err_code (rc));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
entry_ctx = NULL;
|
entry_ctx = NULL;
|
||||||
err = npth_mutex_unlock (&entry_lock);
|
err = npth_mutex_unlock (&entry_lock);
|
||||||
if (err)
|
if (err)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user