Avoid using an already freed string for content id
authorJose Dapena Paz <jdapena@igalia.com>
Mon, 27 Jul 2009 15:47:50 +0000 (17:47 +0200)
committerJose Dapena Paz <jdapena@igalia.com>
Mon, 27 Jul 2009 15:57:58 +0000 (17:57 +0200)
* src/modest-tny-msg.c (add_attachments): get a copy of old content id
  intead of a plain reference, as this may be freed before we use it
  for the new attachment.

src/modest-tny-msg.c

index b7de9db..3c17ced 100644 (file)
@@ -334,8 +334,8 @@ add_attachments (TnyMimePart *part, GList *attachments_list, gboolean add_inline
 
                old_attachment = pos->data;
                if (!tny_mime_part_is_purged (old_attachment)) {
 
                old_attachment = pos->data;
                if (!tny_mime_part_is_purged (old_attachment)) {
-                       const gchar *old_cid;
-                       old_cid = tny_mime_part_get_content_id (old_attachment);
+                       gchar *old_cid;
+                       old_cid = g_strdup (tny_mime_part_get_content_id (old_attachment));
                        attachment_part = copy_mime_part (old_attachment, err);
                        if (attachment_part != NULL) {
                                if (add_inline) {
                        attachment_part = copy_mime_part (old_attachment, err);
                        if (attachment_part != NULL) {
                                if (add_inline) {
@@ -359,6 +359,7 @@ add_attachments (TnyMimePart *part, GList *attachments_list, gboolean add_inline
                                        tny_mime_part_set_content_id (attachment_part, old_cid);
                                g_object_unref (attachment_part);
                        }
                                        tny_mime_part_set_content_id (attachment_part, old_cid);
                                g_object_unref (attachment_part);
                        }
+                       g_free (old_cid);
                }
        }
        return attached;
                }
        }
        return attached;