Bug 1525120 - Fix condition for decoding attachments (base64/qp) when saving or forwarding.

Tag #1273
This commit is contained in:
Matt A. Tobin 2019-11-10 23:51:05 -05:00 • committed by Roy Tam
commit 84617f965f

View file

@ -96,15 +96,14 @@ MimeLeaf_parse_begin (MimeObject *obj)
// don't decode text parts of message types. Other output formats, // don't decode text parts of message types. Other output formats,
// like "display" (nsMimeMessageBodyDisplay), need decoding. // like "display" (nsMimeMessageBodyDisplay), need decoding.
(obj->options->format_out == nsMimeOutput::nsMimeMessageRaw && (obj->options->format_out == nsMimeOutput::nsMimeMessageRaw &&
obj->parent && obj->parent && obj->parent->output_p &&
(!PL_strcasecmp(obj->parent->content_type, MESSAGE_NEWS) || (!PL_strcasecmp(obj->parent->content_type, MESSAGE_NEWS) ||
!PL_strcasecmp(obj->parent->content_type, MESSAGE_RFC822)) && !PL_strcasecmp(obj->parent->content_type, MESSAGE_RFC822))))
!PL_strncasecmp(obj->content_type, "text/", 5)))
/* no-op */ ; /* no-op */ ;
else if (!PL_strcasecmp(obj->encoding, ENCODING_BASE64)) else if (!PL_strcasecmp(obj->encoding, ENCODING_BASE64))
fn = &MimeB64DecoderInit; fn = &MimeB64DecoderInit;
else if (!PL_strcasecmp(obj->encoding, ENCODING_QUOTED_PRINTABLE)) else if (!PL_strcasecmp(obj->encoding, ENCODING_QUOTED_PRINTABLE))
leaf->decoder_data = leaf->decoder_data =
MimeQPDecoderInit(((MimeConverterOutputCallback) MimeQPDecoderInit(((MimeConverterOutputCallback)
((MimeLeafClass *)obj->clazz)->parse_decoded_buffer), ((MimeLeafClass *)obj->clazz)->parse_decoded_buffer),
obj, obj); obj, obj);
@ -153,7 +152,7 @@ MimeLeaf_parse_buffer (const char *buffer, int32_t size, MimeObject *obj)
leaf->sizeSoFar = 0; leaf->sizeSoFar = 0;
if (leaf->decoder_data && if (leaf->decoder_data &&
obj->options && obj->options &&
obj->options->format_out != nsMimeOutput::nsMimeMessageDecrypt obj->options->format_out != nsMimeOutput::nsMimeMessageDecrypt
&& obj->options->format_out != nsMimeOutput::nsMimeMessageAttach) { && obj->options->format_out != nsMimeOutput::nsMimeMessageAttach) {
int outSize = 0; int outSize = 0;