]> granicus.if.org Git - mutt/commitdiff
Preserve forwarded attachment names in d_filename.
authorKevin McCarthy <kevin@8t8.us>
Tue, 4 Oct 2016 18:13:24 +0000 (11:13 -0700)
committerKevin McCarthy <kevin@8t8.us>
Tue, 4 Oct 2016 18:13:24 +0000 (11:13 -0700)
When forwarding an attachment with an non-ascii name, mutt_copy_body()
mangles the filename when calling mutt_adv_mktemp.  Preserve
the original attachment filename in d_filename.

Remove the double copy of b->filename, which is a memory leak.

muttlib.c

index 209c7ab90306e25a09ee8a9b48a9ac9471b59b14..7439f44a7ba3e20d33efdae8e484e02c75f0d9f2 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -132,8 +132,11 @@ int mutt_copy_body (FILE *fp, BODY **tgt, BODY *src)
   b->xtype = safe_strdup (b->xtype);
   b->subtype = safe_strdup (b->subtype);
   b->form_name = safe_strdup (b->form_name);
-  b->filename = safe_strdup (b->filename);
   b->d_filename = safe_strdup (b->d_filename);
+  /* mutt_adv_mktemp() will mangle the filename in tmp,
+   * so preserve it in d_filename */
+  if (!b->d_filename && use_disp)
+    b->d_filename = safe_strdup (src->filename);
   b->description = safe_strdup (b->description);
 
   /*