aboutsummaryrefslogtreecommitdiffstats
path: root/g10/mainproc.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-09-19 08:00:24 +0000
committerWerner Koch <[email protected]>2024-09-19 08:06:55 +0000
commit2770efa75b7666ac57cc29089ab988f61cd246c3 (patch)
treef6b2ec9231d1a1142ae30429e85b29035bcde435 /g10/mainproc.c
parentagent: Fix detection of the trustflag de-vs. (diff)
downloadgnupg-2770efa75b7666ac57cc29089ab988f61cd246c3.tar.gz
gnupg-2770efa75b7666ac57cc29089ab988f61cd246c3.zip
gpg: Avoid wrong decryption_failed for signed+OCB msg w/o pubkey.
* g10/decrypt-data.c (struct decode_filter_context_s): Add flag checktag_failed. (aead_checktag): Set flag. (decrypt_data): Initially clear that flag and check the flag after the decryption. * g10/mainproc.c (proc_encrypted): Revert the log_get_errorcount based check. -- This fixes a bug where for an OCB encrypted and signed message with the signing key missing during decryption the DECRYPTION_FAILED status line was printed along with "WARNING: encrypted message has been manipulated". This was because we use log_error to show that the signature could not be verified due to the missing pubkey; the original fix looked at the error counter and thus triggered the decryption failed status. Fixes-commit: 50e81ad38d2b5a5028fa6815da358c0496aa927e GnuPG-bug-id: 7042
Diffstat (limited to '')
-rw-r--r--g10/mainproc.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/g10/mainproc.c b/g10/mainproc.c
index 2429e1006..039db9ccd 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -798,15 +798,12 @@ proc_encrypted (CTX c, PACKET *pkt)
compliance_de_vs |= 2;
}
- /* Trigger the deferred error. The second condition makes sure that a
- * log_error printed in the cry_cipher_checktag never gets ignored. */
+ /* Trigger the deferred error. */
if (!result && early_plaintext)
result = gpg_error (GPG_ERR_BAD_DATA);
else if (!result && opt.show_only_session_key)
result = -1;
- else if (!result && pkt->pkt.encrypted->aead_algo
- && log_get_errorcount (0))
- result = gpg_error (GPG_ERR_BAD_SIGNATURE);
+
if (result == -1)
;