---
pgp.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/pgp.c b/pgp.c
index 5d3ef3f3..0d485cd2 100644
--- a/pgp.c
+++ b/pgp.c
@@ -1238,13 +1238,14 @@ BODY *pgp_sign_message (BODY *a)
{
BODY *t, *rv = NULL;
char buffer[LONG_STRING];
- BUFFER *sigfile, *signedfile;
+ BUFFER *sigfile, *lf_file, *signedfile;
FILE *pgpin, *pgpout, *pgperr, *fp, *sfp;
int err = 0;
int empty = 1;
pid_t thepid;
sigfile = mutt_buffer_pool_get ();
+ lf_file = mutt_buffer_pool_get ();
signedfile = mutt_buffer_pool_get ();
convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */
@@ -1255,10 +1256,10 @@ BODY *pgp_sign_message (BODY *a)
goto cleanup;
}
- mutt_buffer_mktemp (signedfile);
- if ((sfp = safe_fopen (mutt_b2s (signedfile), "w")) == NULL)
+ mutt_buffer_mktemp (lf_file);
+ if ((sfp = safe_fopen (mutt_b2s (lf_file), "w")) == NULL)
{
- mutt_perror (mutt_b2s (signedfile));
+ mutt_perror (mutt_b2s (lf_file));
safe_fclose (&fp);
unlink (mutt_b2s (sigfile));
goto cleanup;
@@ -1269,6 +1270,16 @@ BODY *pgp_sign_message (BODY *a)
mutt_write_mime_body (a, sfp);
safe_fclose (&sfp);
+ mutt_buffer_mktemp (signedfile);
+ if (mutt_convert_to_crlf (mutt_b2s (lf_file), NULL, mutt_b2s (signedfile),
NULL) < 0)
+ {
+ safe_fclose (&fp);
+ unlink (mutt_b2s (sigfile));
+ unlink (mutt_b2s (lf_file));
+ goto cleanup;
+ }
+ unlink (mutt_b2s (lf_file));
+
if ((thepid = pgp_invoke_sign (&pgpin, &pgpout, &pgperr,
-1, -1, -1, mutt_b2s (signedfile))) == -1)
{
@@ -1357,6 +1368,7 @@ BODY *pgp_sign_message (BODY *a)
cleanup:
mutt_buffer_pool_release (&sigfile);
+ mutt_buffer_pool_release (&lf_file);
mutt_buffer_pool_release (&signedfile);
return (rv);
}
--
2.53.0