"inline");
} else {
const gchar *filename;
+
filename = tny_mime_part_get_filename (old_attachment);
- if (filename)
- tny_mime_part_set_filename (attachment_part, filename);
- else
+ if (filename) {
+ /* If the mime part has a filename do not set it again
+ because Camel won't replace the old one. Instead it
+ will append the filename to the old one and that will
+ mislead email clients */
+ if (!tny_mime_part_get_filename (attachment_part))
+ tny_mime_part_set_filename (attachment_part, filename);
+ } else {
tny_mime_part_set_header_pair (attachment_part, "Content-Disposition",
"attachment");
+ }
}
if (!TNY_IS_MSG (old_attachment)) {
tny_mime_part_set_transfer_encoding (TNY_MIME_PART (attachment_part), "base64");
}
/* Prevent DoS attacks caused by malformed emails */
- if (old_from)
- old_from = modest_text_utils_get_secure_header (old_from,
- from_header);
- if (old_reply_to)
- old_reply_to = modest_text_utils_get_secure_header (old_reply_to,
- reply_header);
+ if (old_from) {
+ gchar *tmp = old_from;
+ old_from = modest_text_utils_get_secure_header ((const gchar *) tmp, from_header);
+ g_free (tmp);
+ }
+ if (old_reply_to) {
+ gchar *tmp = old_reply_to;
+ old_reply_to = modest_text_utils_get_secure_header ((const gchar *) tmp, reply_header);
+ g_free (tmp);
+ }
/* for mailing lists, use both Reply-To and From if we did a
* 'Reply All:'
recipients = modest_text_utils_split_addresses_list (after_remove);
g_free (after_remove);
+ if (from)
+ g_free (from);
+ if (to)
+ g_free (to);
+ if (cc)
+ g_free (cc);
+ if (bcc)
+ g_free (bcc);
+
return recipients;
}