Hello,

I've observed the following issue with mutt:

When multiple

        -----BEGIN PGP xyz——
        -----END PGP xyz——

blocks are present and <check-traditional-pgp> (Esc P) was invoked, mutt
leaves temporary files in $TMPDIR.

Root cause seems to be pgp.c:pgp_application_pgp_handler().  If multiple
blocks are present (a signature and a public key; more then one public
key etc.) mutt_mktemp() and safe_fopen() are called multiple times for
tmpfname and outfile without closing and unlinking before.

Attached is a sample mbox file with two public key blocks.  To reproduce
this issue open the mbox, invoke <check-traditional-pgp> (Esc P), quit
mutt and inspect $TMPDIR.

The attached patch fixes this for me.

Dennis
diff -urp mutt-1.5.23hg_orig/pgp.c mutt-1.5.23hg/pgp.c
--- mutt-1.5.23hg_orig/pgp.c    2015-01-28 09:00:03.000000000 +0100
+++ mutt-1.5.23hg/pgp.c 2015-02-26 12:39:21.000000000 +0100
@@ -444,6 +444,16 @@ int pgp_application_pgp_handler (BODY *m
           mutt_error _("Could not decrypt PGP message");
          mutt_sleep (1);
          rc = -1;
+         if (tmpfp)
+         {
+           safe_fclose (&tmpfp);
+           mutt_unlink (tmpfname);
+         }
+         if (pgpout)
+         {
+           safe_fclose (&pgpout);
+           mutt_unlink (outfile);
+         }
          goto out;
         }
       }
@@ -501,6 +511,16 @@ int pgp_application_pgp_handler (BODY *m
        else
          state_attach_puts (_("[-- END PGP SIGNED MESSAGE --]\n"), s);
       }
+      if (tmpfp)
+      {
+        safe_fclose (&tmpfp);
+        mutt_unlink (tmpfname);
+      }
+      if (pgpout)
+      {
+        safe_fclose (&pgpout);
+        mutt_unlink (outfile);
+      }
     }
     else
     {
@@ -517,17 +537,6 @@ int pgp_application_pgp_handler (BODY *m
 out:
   m->goodsig = (maybe_goodsig && have_any_sigs);
 
-  if (tmpfp)
-  {
-    safe_fclose (&tmpfp);
-    mutt_unlink (tmpfname);
-  }
-  if (pgpout)
-  {
-    safe_fclose (&pgpout);
-    mutt_unlink (outfile);
-  }
-
   FREE(&gpgcharset);
 
   if (needpass == -1)
>From [email protected] Wed Dec 26 18:45:17 2012
Date: Wed, 26 Dec 2012 18:45:16 +0100
From: Dennis Preiser <[email protected]>
To: Dennis Preiser <[email protected]>
Subject: message with multiple PGP public keys
Message-ID: <[email protected]>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Status: RO

Lorem ipsum dolor sit amet, consectetur, adipisci velit …

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org

mQENBE6MgMABCADxen9duWqdJhqxTKFmp493YKQFFTaw3IV60Dtj0mhtskH+utuJ
qB0ilFznRJYAlH/Piz9ZhnSKBU2u++9xDVkHB0OUhhGooV3dBR7r06S+uX1Yb0cv
4G+tFrk9xGUxSPpmQxmXYM9xoqQ+M1sZ7uvR5j7gNMi1+2IEu2uTp6ofNSS6D3v7
DAMsRJuZIJ2yH2z8fnWvsL+41hHUOwQgbyHNFC2fLTGlHLDE470RfnB+mt0atIA5
1gVSvGc1hbNUwowM1vafQYsgRTmgDfexRD8l+JElFQxnBCLnVkK+JphtbpzuO8nF
Le/t8mX/uTik+8ORWjUwv3XCM1JFZnyP+8XtABEBAAG0HURlbm5pcyBQcmVpc2Vy
IDxkX19wQGQtLXAuZGU+iQE4BBMBAgAiAhsvBgsJCAcDAgYVCAIJCgsEFgIDAQIe
AQIXgAUCToyBTAAKCRBcMWUz+caM51uuB/9i2HixlMi6Cp/7DP9Whov0Qiq/8pH9
S2YUIW0MFQmvZECFFbaPrCwsXLtj/qhb/1fN0PhR9A2lJORfZ0hbDQBSXxPoE/Ty
PF8Yhca9W19Br0b1gLOm/NbIucrS1VQlK5i+8MNkqF8Dj/cy7aHO6sK1IV9B4AEJ
ughjXmAXV9KIOORqU1BvORTK99EAhYlAEoL0WT1TFnjJASU9toNG4y60IYbDStbb
QCIm0zqLNR5QF4hSRG2pbb/04/6dpbbEjCLBRBHmMRgC9gMYQos7iPVwepD0YDdd
4zbu2VRxvMBIoMcwM0TEkKp7tcCtGi8c/J1xtdC0eXoe7bOsD3+atnYdtB9EZW5u
aXMgUHJlaXNlciA8ZGVubmlzQGQtLXAuZGU+iQE7BBMBAgAlAhsvBgsJCAcDAgYV
CAIJCgsEFgIDAQIeAQIXgAUCToyBTAIZAQAKCRBcMWUz+caM5yJHCACkE2IuZlN4
+ExXggHB6YrpEuLE5C4c7DJO+gBkC1oV9RufXnamC4xJ926Cwnih9OUfOzf99AkD
4ou9t15rsGIzDT0L13uME3iGI4Ju828bF0xjt/+PRqi75QIWdwpbAnGzKu+99U/A
srntqG/+PwktAvL6Q/pXNdUC06plcnUx4tl6t3d3TzeI18oHkYzvpNgpqPBeKoJS
9l7dYjdV0GM97myQHkp1hNb4CMR/98YbzfqTjNECDhUZxg6csxk6Vk4Zo3sOjr6z
5+fNS1IJeJlb6WpXFsBrQPN4JiOmkaDT6DE6sBAOTQX8czuSSw2tdIo7mDRL1O/o
Bk23gjL7x+lsuQENBE6MgMABCAC7dsVrw0KEA3uXxqa6YOty4hC5qrYkXYcUPeYu
jz7yedJ5xAJUj1aNp3h7G9t+4AxpFjR5bUgNckpkaFPqef25tW07gcYZ9Ijtt+jJ
pPHmWui/4Nh5pMLR20qnCbFocGAQKoW/jlrQ1/NEW2wqEfNnaNa+4c/nfcffsC0I
3lAgGIxQWNIecwbhYkdwsyXnVk02XW+j+5OoKjFiBG2caM7O0JDS4+MsHZxRp1dk
7H0VapsK0C84mQZaqxaooRpnVSmemQhuqJ5Wx52mNcswgBQitQDw0oPG2Wyv2lpa
cwttn8xMMhU3DOtmtRKVp524iHnWVL6nC2B7eU+70a7UCQPXABEBAAGJAj4EGAEC
AAkFAk6MgMACGy4BKQkQXDFlM/nGjOfAXSAEGQECAAYFAk6MgMAACgkQN1TdzUnG
Sx25DAgAgmaCHEdBXEdIP49BN2E41id1X7S/AJPf6SaQSr2PtLgj0Lp40rjtlwTn
z5eA8ZB3W6JHHIa1+JO63M3MXmtMEC22hUocM3fbedO59G2oSAOMdT8LcZrFN8pm
Kg+hr0G1jIgV/XBIsnx3nBZB95zSLJ6V8LyezAhNi9fb+dW54tlU0BVqOEhhyVOr
Fwa6p6k3T58OWvF3T/5Rc8yZoAGIqWNWaZZZrgDl7BcDj76x5t0V7hYYbYKGkrUc
FBPr2mazMizZu26BxeCKQds2p4XpoQ4Xii8OyxYyBM9yqAf9QYwBo2HVZ3y2P/ht
3sIFY8FDokyZAazgEsmdyMT/4wjMMcoJCACOkVJptoTmhQaIdiITMK8oOAxRk4Jx
k0IvfR7VJSKF1X/qjyvLeRkvAFg0dlOFaQw46MIB7sOmaVlt3m07zDnT1GYrD0AV
cRPcEo7RU4gigJ7YnNA+iWeNGPXrtxU1as3Vxk+Gj2k6SZS/yDAWvojzS6d605qO
y0bXaY4axbSF3hk1QCje+bzrHfF1lb9o98jlPa6kgYU9k7coucMS6pHhPqVeKuIA
HWjTpgDMhIKTLYBSADzB+S+Okh+j7h6/mN7AnwlOpCkgTWyi2FpAPirETv+LzqnJ
OKDi/kRlUYbg1cC/MPtisMUu+kCILvpERHI5bvtPu93gUvHEc/H/2AYE
=BCpB
-----END PGP PUBLIC KEY BLOCK-----

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org

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
=BCpB
-----END PGP PUBLIC KEY BLOCK-----

Reply via email to