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/genkey.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 'src/genkey.c')
-rw-r--r-- | src/genkey.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/genkey.c b/src/genkey.c index 77576b18..89e1d985 100644 --- a/src/genkey.c +++ b/src/genkey.c @@ -172,7 +172,9 @@ genkey_status_handler (void *priv, gpgme_status_code_t code, char *args) break; 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: |