Re: mutt/2139: messages with base64-encoded CRLF pgp bits can't be read
The following reply was made to PR mutt/2139; it has been noted by GNATS.
From: Thomas Roessler <roessler@xxxxxxxxxxxxxxxxxx>
To: bug-any@xxxxxxxxxxxxx
Cc:
Subject: Re: mutt/2139: messages with base64-encoded CRLF pgp bits can't be read
Date: Tue, 22 Nov 2005 13:32:00 +0100
On 2005-11-21 21:41:36 +0100, asp16@xxxxxxxxx wrote:
> Also, and with respect Daniel's original report, note that even
> if mutt properly opens the message, it outputs somehow confusing
> messages. First:
> Could not decrypt PGP message
>
> And then, when displaying:
>
> PGP message successfully decrypted.
*sigh*
This patch complicates the spaghetti code in pgp.c a tiny bit more,
but fixes this particular problem:
diff -u -r3.60 pgp.c
--- pgp.c 21 Oct 2005 04:35:37 -0000 3.60
+++ pgp.c 22 Nov 2005 12:30:15 -0000
@@ -243,6 +243,7 @@
int pgp_application_pgp_handler (BODY *m, STATE *s)
{
+ int could_not_decrypt = 0;
int needpass = -1, pgp_keyblock = 0;
int clearsign = 0, rv, rc;
int c = 1; /* silence GCC warning */
@@ -398,15 +399,16 @@
}
if (!clearsign && (!pgpout || c == EOF))
{
+ could_not_decrypt = 1;
+ pgp_void_passphrase ();
+ }
+
+ if (could_not_decrypt && !(s->flags & M_DISPLAY))
+ {
mutt_error _("Could not decrypt PGP message");
mutt_sleep (1);
- pgp_void_passphrase ();
-
- if (!(s->flags & M_DISPLAY))
- {
- rc = -1;
- goto out;
- }
+ rc = -1;
+ goto out;
}
}
@@ -450,7 +452,10 @@
if (needpass)
{
state_attach_puts (_("[-- END PGP MESSAGE --]\n"), s);
- mutt_message _("PGP message successfully decrypted.");
+ if (could_not_decrypt)
+ mutt_error _("Could not decrypt PGP message");
+ else
+ mutt_message _("PGP message successfully decrypted.");
}
else if (pgp_keyblock)
state_attach_puts (_("[-- END PGP PUBLIC KEY BLOCK --]\n"), s);
--
Thomas Roessler <roessler@xxxxxxxxxxxxxxxxxx>