<<< Date Index >>>     <<< Thread Index >>>

[PATCH 2 of 4] Fix various resource leaks throughout sendlib.c



1 file changed, 14 insertions(+), 12 deletions(-)
sendlib.c |   26 ++++++++++++++------------


# HG changeset patch
# User Erik Hovland <erik@xxxxxxxxxxx>
# Date 1237420329 25200
# Branch HEAD
# Node ID 1b97d4b561846e0d77e8216bde94f7c2637a0149
# Parent  9ccf56c08a039ffa448fbd3f34c659a19fcb6ae4
Fix various resource leaks throughout sendlib.c

diff --git a/sendlib.c b/sendlib.c
--- a/sendlib.c
+++ b/sendlib.c
@@ -828,7 +828,7 @@
   for (i = 0; i < ncodes; i++)
     FREE (&tcode[i]);
 
-  FREE (tcode);                /* __FREE_CHECKED__ */
+  FREE (&tcode);               /* __FREE_CHECKED__ */
   
   return ret;
 }
@@ -1069,7 +1069,7 @@
  cleanup:
   FREE (&line);
 
-  if (fpin && !fp)
+  if (fpin && fpin != fp)
     safe_fclose (&fpin);
   if (fpout)
     safe_fclose (&fpout);
@@ -1385,6 +1385,7 @@
     }
   } 
 
+  FREE (&info);
   mutt_update_encoding (att);
   return (att);
 }
@@ -2395,6 +2396,7 @@
   {
     mutt_error (_("Bad IDN %s while preparing resent-from."),
                err);
+    rfc822_free_address (&from);
     return -1;
   }
   rfc822_write_address (resent_from, sizeof (resent_from), from, 0);
@@ -2467,7 +2469,7 @@
 
 int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int 
post, char *fcc)
 {
-  CONTEXT f;
+  CONTEXT *f = NULL;
   MESSAGE *msg;
   char tempfile[_POSIX_PATH_MAX];
   FILE *tempfp = NULL;
@@ -2476,7 +2478,7 @@
   if (post)
     set_noconv_flags (hdr->content, 1);
   
-  if (mx_open_mailbox (path, M_APPEND | M_QUIET, &f) == NULL)
+  if ((f = mx_open_mailbox (path, M_APPEND | M_QUIET, f)) == NULL)
   {
     dprint (1, (debugfile, "mutt_write_fcc(): unable to open mailbox %s in 
append-mode, aborting.\n",
                path));
@@ -2486,21 +2488,21 @@
   /* We need to add a Content-Length field to avoid problems where a line in
    * the message body begins with "From "   
    */
-  if (f.magic == M_MMDF || f.magic == M_MBOX)
+  if (f->magic == M_MMDF || f->magic == M_MBOX)
   {
     mutt_mktemp (tempfile);
     if ((tempfp = safe_fopen (tempfile, "w+")) == NULL)
     {
       mutt_perror (tempfile);
-      mx_close_mailbox (&f, NULL);
+      mx_close_mailbox (f, NULL);
       return (-1);
     }
   }
 
   hdr->read = !post; /* make sure to put it in the `cur' directory (maildir) */
-  if ((msg = mx_open_new_message (&f, hdr, M_ADD_FROM)) == NULL)
+  if ((msg = mx_open_new_message (f, hdr, M_ADD_FROM)) == NULL)
   {
-    mx_close_mailbox (&f, NULL);
+    mx_close_mailbox (f, NULL);
     return (-1);
   }
 
@@ -2606,9 +2608,9 @@
       dprint (1, (debugfile, "mutt_write_fcc(): %s: write failed.\n", 
tempfile));
       safe_fclose (&tempfp);
       unlink (tempfile);
-      mx_commit_message (msg, &f);     /* XXX - really? */
+      mx_commit_message (msg, f);      /* XXX - really? */
       mx_close_message (&msg);
-      mx_close_mailbox (&f, NULL);
+      mx_close_mailbox (f, NULL);
       return -1;
     }
 
@@ -2634,10 +2636,10 @@
     r = mutt_write_mime_body (hdr->content, msg->fp);
   }
 
-  if (mx_commit_message (msg, &f) != 0)
+  if (mx_commit_message (msg, f) != 0)
     r = -1;
   mx_close_message (&msg);
-  mx_close_mailbox (&f, NULL);
+  mx_close_mailbox (f, NULL);
 
   if (post)
     set_noconv_flags (hdr->content, 0);