<<< Date Index >>>     <<< Thread Index >>>

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>