1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

gpg-mail-type: Assume text/plain for missing content-type.

* tools/gpg-mail-tube.c (mail_tube_encrypt): Rename var ct_text for
clarity.  Replace debug diagnostic by log_info. Assume text/plain for
missing content-type.
--

Without this fix we would create message/rfc822 attachment instead of
a text/plain attachment with the encrypted body.
This commit is contained in:
Werner Koch 2024-11-07 10:49:52 +01:00
parent b389e04ef5
commit 567fb6eaa0
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -429,7 +429,7 @@ mail_tube_encrypt (estream_t fpin, strlist_t recipients)
gpgrt_process_t proc = NULL; gpgrt_process_t proc = NULL;
int exitcode; int exitcode;
int i, found; int i, found;
int ct_text = 0; int ct_is_text = 0;
ctx->msg = rfc822parse_open (mail_tube_message_cb, ctx); ctx->msg = rfc822parse_open (mail_tube_message_cb, ctx);
if (!ctx->msg) if (!ctx->msg)
@ -502,9 +502,12 @@ mail_tube_encrypt (estream_t fpin, strlist_t recipients)
const char *media; const char *media;
field = rfc822parse_parse_field (ctx->msg, "Content-Type", -1); field = rfc822parse_parse_field (ctx->msg, "Content-Type", -1);
if (field && (media = rfc822parse_query_media_type (field, NULL)) if (!field)
ct_is_text = 1; /* Assumed CT is text/plain. */
else if ((media = rfc822parse_query_media_type (field, NULL))
&& !strcmp (media, "text")) && !strcmp (media, "text"))
ct_text = 1; ct_is_text = 1;
rfc822parse_release_field (field); rfc822parse_release_field (field);
} }
@ -557,14 +560,14 @@ mail_tube_encrypt (estream_t fpin, strlist_t recipients)
"\r\n" "\r\n"
"--=-=mt-%s=-=\r\n", "--=-=mt-%s=-=\r\n",
boundary, boundary,
ct_text? "file":"message", ct_is_text? "file":"message",
boundary); boundary);
if (ct_text) if (ct_is_text)
es_fprintf (es_stdout, es_fprintf (es_stdout,
"Content-Type: text/plain; charset=us-ascii\r\n" "Content-Type: text/plain; charset=us-ascii\r\n"
"Content-Description: PGP encrypted file\r\n" "Content-Description: PGP encrypted file\r\n"
"Content-Disposition: attachment; filename=\"%s\"\r\n" "Content-Disposition: attachment; filename=\"%s\"\r\n"
"\r\n", "pgp-encrypted-file.asc"); "\r\n", "pgp-encrypted-file.txt.asc");
else else
es_fprintf (es_stdout, es_fprintf (es_stdout,
"Content-Type: message/rfc822\r\n" "Content-Type: message/rfc822\r\n"
@ -596,18 +599,19 @@ mail_tube_encrypt (estream_t fpin, strlist_t recipients)
goto leave; goto leave;
} }
if (opt.as_attach && ct_text) if (opt.as_attach && ct_is_text)
{ {
/* No headers at all; write as plain file and ignore the encoding. */ /* No headers at all; write as plain file and ignore the encoding. */
/* FIXME: Should we do a base64 or QP decoding? */ /* FIXME: Should we do a base64 or QP decoding? */
} }
else else
{ {
/* Write new mime headers using the old content-* values. */ /* Write new mime headers using the original content-* values. */
for (i=0; i < DIM (ct_names); i++) for (i=0; i < DIM (ct_names); i++)
{ {
line = rfc822parse_get_field (ctx->msg, ct_names[i], -1, NULL); line = rfc822parse_get_field (ctx->msg, ct_names[i], -1, NULL);
log_debug ("OLD CT is '%s'\n", line); if (opt.verbose)
log_info ("original Content-type is '%s'\n", line);
if (line) if (line)
{ {
es_fprintf (gpginfp, "%s\r\n", line); es_fprintf (gpginfp, "%s\r\n", line);