diff options
author | Ingo Klöcker <[email protected]> | 2023-11-14 12:48:48 +0000 |
---|---|---|
committer | Ingo Klöcker <[email protected]> | 2023-11-14 12:51:24 +0000 |
commit | 77e982579ccadb20ee865337ada9579ac41164e1 (patch) | |
tree | 896d438e554e9c336b3474e440c5a823b0cff877 /src/verify.c | |
parent | tests: Add option --chain to run-keylist (diff) | |
download | gpgme-77e982579ccadb20ee865337ada9579ac41164e1.tar.gz gpgme-77e982579ccadb20ee865337ada9579ac41164e1.zip |
core: Preserve more specific existing failure code
* src/decrypt.c (_gpgme_decrypt_status_handler): Ignore received failure
code if we already have a specific failure code.
* src/encrypt.c (_gpgme_encrypt_status_handler): Ditto.
* src/export.c (export_status_handler): Ditto.
* src/genkey.c (genkey_status_handler): Ditto.
* src/keylist.c (keylist_status_handler): Ditto.
* src/keysign.c (keysign_status_handler): Ditto.
* src/passwd.c (passwd_status_handler): Ditto.
* src/revsig.c (revsig_status_handler): Ditto.
* src/setexpire.c (setexpire_status_handler): Ditto.
* src/sign.c (_gpgme_sign_status_handler): Ditto.
* src/tofupolicy.c (tofu_policy_status_handler): Ditto.
* src/verify.c (_gpgme_verify_status_handler): Ditto.
--
Usually, a process emits at most one failure code. But some operations
like the creation of an encrypted archive involve multiple chained
processes, so that multiple failure codes can be received. We want to
keep the first specific failure code we received. Further failure codes
are only parsed if we received just an unspecific "general error" so
far.
GnuPG-bug-id: 6575
Diffstat (limited to '')
-rw-r--r-- | src/verify.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/verify.c b/src/verify.c index 3ae94c65..8d87cad3 100644 --- a/src/verify.c +++ b/src/verify.c @@ -1055,7 +1055,9 @@ _gpgme_verify_status_handler (void *priv, gpgme_status_code_t code, char *args) return parse_error (sig, args, !!sig ); case GPGME_STATUS_FAILURE: - opd->failure_code = _gpgme_parse_failure (args); + if (!opd->failure_code + || gpg_err_code (opd->failure_code) == GPG_ERR_GENERAL) + opd->failure_code = _gpgme_parse_failure (args); break; case GPGME_STATUS_EOF: |