---
pgp.c | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/pgp.c b/pgp.c
index 171be732..c8543124 100644
--- a/pgp.c
+++ b/pgp.c
@@ -1647,7 +1647,7 @@ cleanup:
BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
{
BODY *b = NULL;
- BUFFER *pgpinfile, *pgpoutfile, *pgperrfile;
+ BUFFER *pgpinfile_lf, *pgpoutfile, *pgperrfile, *pgpinfile_crlf;
char body_charset[STRING];
char *from_charset;
const char *send_charset;
@@ -1669,14 +1669,15 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags,
char *keylist)
return NULL;
}
- pgpinfile = mutt_buffer_pool_get ();
+ pgpinfile_lf = mutt_buffer_pool_get ();
+ pgpinfile_crlf = mutt_buffer_pool_get ();
pgpoutfile = mutt_buffer_pool_get ();
pgperrfile = mutt_buffer_pool_get ();
- mutt_buffer_mktemp (pgpinfile);
- if ((pgpin = safe_fopen (mutt_b2s (pgpinfile), "w")) == NULL)
+ mutt_buffer_mktemp (pgpinfile_lf);
+ if ((pgpin = safe_fopen (mutt_b2s (pgpinfile_lf), "w")) == NULL)
{
- mutt_perror (mutt_b2s (pgpinfile));
+ mutt_perror (mutt_b2s (pgpinfile_lf));
safe_fclose (&fp);
goto cleanup;
}
@@ -1718,13 +1719,22 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags,
char *keylist)
safe_fclose (&fp);
safe_fclose (&pgpin);
+ mutt_buffer_mktemp (pgpinfile_crlf);
+ if (mutt_convert_to_crlf (mutt_b2s (pgpinfile_lf), NULL,
+ mutt_b2s (pgpinfile_crlf), NULL) < 0)
+ {
+ unlink (mutt_b2s (pgpinfile_lf));
+ goto cleanup;
+ }
+ unlink (mutt_b2s (pgpinfile_lf));
+
mutt_buffer_mktemp (pgpoutfile);
mutt_buffer_mktemp (pgperrfile);
if ((pgpout = safe_fopen (mutt_b2s (pgpoutfile), "w+")) == NULL ||
(pgperr = safe_fopen (mutt_b2s (pgperrfile), "w+")) == NULL)
{
mutt_perror (pgpout ? mutt_b2s (pgperrfile) : mutt_b2s (pgpoutfile));
- unlink (mutt_b2s (pgpinfile));
+ unlink (mutt_b2s (pgpinfile_crlf));
if (pgpout)
{
safe_fclose (&pgpout);
@@ -1737,12 +1747,12 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags,
char *keylist)
if ((thepid = pgp_invoke_traditional (&pgpin, NULL, NULL,
-1, fileno (pgpout), fileno (pgperr),
- mutt_b2s (pgpinfile), keylist, flags))
== -1)
+ mutt_b2s (pgpinfile_crlf), keylist,
flags)) == -1)
{
mutt_perror _("Can't invoke PGP");
safe_fclose (&pgpout);
safe_fclose (&pgperr);
- mutt_unlink (mutt_b2s (pgpinfile));
+ mutt_unlink (mutt_b2s (pgpinfile_crlf));
unlink (mutt_b2s (pgpoutfile));
goto cleanup;
}
@@ -1756,7 +1766,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags,
char *keylist)
if (mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))
empty=1;
- mutt_unlink (mutt_b2s (pgpinfile));
+ mutt_unlink (mutt_b2s (pgpinfile_crlf));
fflush (pgpout);
fflush (pgperr);
@@ -1812,7 +1822,8 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags,
char *keylist)
b->encoding = a->encoding;
cleanup:
- mutt_buffer_pool_release (&pgpinfile);
+ mutt_buffer_pool_release (&pgpinfile_lf);
+ mutt_buffer_pool_release (&pgpinfile_crlf);
mutt_buffer_pool_release (&pgpoutfile);
mutt_buffer_pool_release (&pgperrfile);
return b;
--
2.53.0