mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01: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;
|
||||
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;
|
||||
err = npth_mutex_unlock (&entry_lock);
|
||||
if (err)
|
||||
|
Loading…
x
Reference in New Issue
Block a user