]> granicus.if.org Git - neomutt/commitdiff
Use safe_fclose() instead of fclose(), add fclose() to check_sec.sh
authorRocco Rutte <pdmef@gmx.net>
Sun, 15 Mar 2009 12:46:52 +0000 (13:46 +0100)
committerRocco Rutte <pdmef@gmx.net>
Sun, 15 Mar 2009 12:46:52 +0000 (13:46 +0100)
42 files changed:
ChangeLog
alias.c
attach.c
buffy.c
check_sec.sh
commands.c
compose.c
copy.c
crypt-gpgme.c
crypt.c
edit.c
editmsg.c
gnupgparse.c
handler.c
headers.c
help.c
history.c
imap/message.c
init.c
lib.c
main.c
mbox.c
mh.c
mutt_ssl.c
mutt_ssl_gnutls.c
muttlib.c
pager.c
pattern.c
pgp.c
pgpkey.c
pgppubring.c
pop.c
postpone.c
query.c
recvattach.c
recvcmd.c
rfc1524.c
rfc3676.c
send.c
sendlib.c
smime.c
smtp.c

index 1d89f17564784c4092114759a73c710cbc7aea67..442798f3ca0bd40806bcffdf6e96aed0b8d308de 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-03-10 18:39 +0100  NONAKA Kimihiro  <nonakap@gmail.com>  (cc6fede605d4)
+
+       * ChangeLog, mh.c: Fix crashes with 64bit time_t. Closes #3184.
+
 2009-03-09 12:04 +0100  Vincent Lefevre  <vincent@vinc17.org>  (4ce562b7f5d7)
 
        * mbyte.h: Unbreak compilation on OS X with --with-regex/--without-wc-
diff --git a/alias.c b/alias.c
index 9128372fa8e432d0b9c2e4147feaa2eeb583f933..1de2bf4e1de45d3e1573581398fdbbd3d9630bf4 100644 (file)
--- a/alias.c
+++ b/alias.c
@@ -378,7 +378,7 @@ retry_name:
     recode_buf (buf, sizeof (buf));
     write_safe_address (rc, buf);
     fputc ('\n', rc);
-    fclose (rc);
+    safe_fclose (&rc);
     mutt_message _("Alias added.");
   }
   else
@@ -388,7 +388,7 @@ retry_name:
   
   fseek_err:
   mutt_perror (_("Error seeking in alias file"));
-  fclose(rc);
+  safe_fclose (&rc);
   return;
 }
 
index 5acc17b3707989ce3f6e6f88bfea2bfb2c13537e..9e99e9245cd78a5bf7bd3facaeb0696877c94b29 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -76,8 +76,8 @@ int mutt_get_tmp_attachment (BODY *a)
   else
     mutt_perror(fpin ? tempfile : a->filename);
   
-  if(fpin)  fclose(fpin);
-  if(fpout) fclose(fpout);
+  if(fpin)  safe_fclose (&fpin);
+  if(fpout) safe_fclose (&fpout);
   
   return a->unlink ? 0 : -1;
 }
@@ -176,8 +176,8 @@ int mutt_compose_attachment (BODY *a)
              goto bailout;
            }
            mutt_copy_stream (fp, tfp);
-           fclose (fp);
-           fclose (tfp);
+           safe_fclose (&fp);
+           safe_fclose (&tfp);
            mutt_unlink (a->filename);  
            if (mutt_rename_file (tempfile, a->filename) != 0) 
            {
@@ -884,7 +884,7 @@ int mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,
     if (stat (m->filename, &st) == -1)
     {
       mutt_perror ("stat");
-      fclose (s.fpout);
+      safe_fclose (&s.fpout);
       return (-1);
     }
 
@@ -915,7 +915,7 @@ int mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,
 
   mutt_body_handler (m, &s);
 
-  fclose (s.fpout);
+  safe_fclose (&s.fpout);
   if (fp == NULL)
   {
     m->length = 0;
@@ -926,7 +926,7 @@ int mutt_decode_save_attachment (FILE *fp, BODY *m, char *path,
       m->parts = saved_parts;
       m->hdr = saved_hdr;
     }
-    fclose (s.fpin);
+    safe_fclose (&s.fpin);
   }
 
   return (0);
diff --git a/buffy.c b/buffy.c
index db20c218c57e9fb86f31686763e1584bd1b1f81f..c5578504dc56c3d07fbcdc65cc3c32a91276add5 100644 (file)
--- a/buffy.c
+++ b/buffy.c
@@ -128,7 +128,7 @@ static int test_new_folder (const char *path)
   if ((f = fopen (path, "rb")))
   {
     rc = test_last_status_new (f);
-    fclose (f);
+    safe_fclose (&f);
   }
 
   return rc;
index f8a73e5c10ac00c119a9e1ab5c21da1f1f2ee999..c4505a3a44b46ebbc21b898acb3120353afa5f73 100755 (executable)
@@ -31,6 +31,7 @@ do_check ()
 }
 
 do_check '\<fopen.*'\"'.*w' __FOPEN_CHECKED__ "Alert: Unchecked fopen calls."
+do_check '\<fclose.*'\"'.*w' __FCLOSE_CHECKED__ "Alert: Unchecked fclose calls."
 do_check '\<(mutt_)?strcpy' __STRCPY_CHECKED__ "Alert: Unchecked strcpy calls."
 do_check '\<strcat' __STRCAT_CHECKED__ "Alert: Unchecked strcat calls."
 do_check '\<sprintf.*%s' __SPRINTF_CHECKED__ "Alert: Unchecked sprintf calls."
index 45b9db76cab5eba28c109a84279b77847b08acc1..35707954e775eb91603566f8ed01e87197ed2775 100644 (file)
@@ -391,7 +391,7 @@ static int _mutt_pipe_message (HEADER *h, char *cmd,
     }
       
     pipe_msg (h, fpout, decode, print);
-    fclose (fpout);
+    safe_fclose (&fpout);
     rc = mutt_wait_filter (thepid);
   }
   else
index 28296460390bb7854f53f3e6294d9308c68f40a9..d500f07e02a58bb9d6a016eaf89e7ade1f763cca 100644 (file)
--- a/compose.c
+++ b/compose.c
@@ -1073,7 +1073,7 @@ int mutt_compose_menu (HEADER *msg,   /* structure for new message */
            FREE (&idx[idxlen]);
            continue;
          }
-         fclose (fp);
+         safe_fclose (&fp);
 
          if ((idx[idxlen]->content = mutt_make_file_attach (fname)) == NULL)
          {
diff --git a/copy.c b/copy.c
index fa28320058e6770524d2a1fe11084856e50d1e6f..95e12aed7d8906def1035dc614db3fb7059d9e4c 100644 (file)
--- a/copy.c
+++ b/copy.c
@@ -633,12 +633,12 @@ _mutt_copy_message (FILE *fpout, FILE *fpin, HEADER *hdr, BODY *body,
     fseeko (fp, cur->offset, 0);
     if (mutt_copy_bytes (fp, fpout, cur->length) == -1)
     {
-      fclose (fp);
+      safe_fclose (&fp);
       mutt_free_body (&cur);
       return (-1);
     }
     mutt_free_body (&cur);
-    fclose (fp);
+    safe_fclose (&fp);
   }
   else
   {
index 8aac3dda61bc91e1374d9517ed0f898230092a47..244293f5afcb899950c5255c1e08fe3d4c1b8797 100644 (file)
@@ -440,12 +440,12 @@ static gpgme_data_t body_to_data_object (BODY *a, int convert)
           buf[0] = c;
           gpgme_data_write (data, buf, 1);
         }
-      fclose(fptmp);
+      safe_fclose (&fptmp);
       gpgme_data_seek (data, 0, SEEK_SET);
     }
   else
     {
-      fclose(fptmp);
+      safe_fclose (&fptmp);
       err = gpgme_data_new_from_file (&data, tempfile, 1);
     }
   unlink (tempfile);
@@ -544,7 +544,7 @@ static char *data_object_to_tempfile (gpgme_data_t data, FILE **ret_fp)
           if (fwrite (buf, nread, 1, fp) != 1)
             {
               mutt_perror (tempfile);
-              fclose (fp);
+              safe_fclose (&fp);
               unlink (tempfile);
               return NULL;
             }
@@ -553,12 +553,12 @@ static char *data_object_to_tempfile (gpgme_data_t data, FILE **ret_fp)
   if (ret_fp)
     rewind (fp);
   else
-    fclose (fp);
+    safe_fclose (&fp);
   if (nread == -1)
     {
       mutt_error (_("error reading data object: %s\n"), gpgme_strerror (err));
       unlink (tempfile);
-      fclose (fp);
+      safe_fclose (&fp);
       return NULL;
     }
   if (ret_fp)
@@ -1788,7 +1788,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)
   b->type = saved_b_type;
   b->length = saved_b_length;
   b->offset = saved_b_offset;
-  fclose (tmpfp);
+  safe_fclose (&tmpfp);
   rewind (*fpout);
   if (*cur && !is_signed && !(*cur)->parts && mutt_is_application_smime (*cur))
     {
@@ -1824,7 +1824,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)
       bb->length = ftello (s.fpout);
       bb->offset = 0;
       rewind (tmpfp);
-      fclose (*fpout); 
+      safe_fclose (fpout); 
 
       memset (&s, 0, sizeof (s));
       s.fpin = tmpfp;
@@ -1843,7 +1843,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin, FILE **fpout, BODY *b, BODY **cur)
       bb->type = saved_b_type;
       bb->length = saved_b_length;
       bb->offset = saved_b_offset;
-      fclose (tmpfp);
+      safe_fclose (&tmpfp);
       rewind (*fpout);
       mutt_free_body (cur);
       *cur = tmp_b;
@@ -1956,10 +1956,7 @@ static int pgp_gpgme_extract_keys (gpgme_data_t keydata, FILE** fp, int dryrun)
 
 err_fp:
   if (rc)
-  {
-    fclose (*fp);
-    *fp = NULL;
-  }
+    safe_fclose (fp);
 err_tmpdir:
   if (dryrun)
     mutt_rmtree (tmpdir);
@@ -2068,7 +2065,7 @@ void pgp_gpgme_invoke_import (const char *fname)
     dprint (1, (debugfile, "error converting key file into data object\n"));
     return;
   }
-  fclose (in);
+  safe_fclose (&in);
 
   if (!pgp_gpgme_extract_keys (keydata, &out, 0))
   {
@@ -2076,7 +2073,7 @@ void pgp_gpgme_invoke_import (const char *fname)
     outlen = ftell (out);
     fseek (out, 0, SEEK_SET);
     mutt_copy_bytes (out, stdout, outlen);
-    fclose (out);
+    safe_fclose (&out);
   }
   else
     printf (_("Error extracting key data!\n"));
@@ -2150,7 +2147,7 @@ static void copy_clearsigned (gpgme_data_t data, STATE *s, char *charset)
   }
   
   fgetconv_close (&fc);
-  fclose (fp);
+  safe_fclose (&fp);
 }
 
 
@@ -2476,7 +2473,7 @@ int pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
       mutt_free_body (&tattach);
     }
   
-  fclose (fpout);
+  safe_fclose (&fpout);
   mutt_unlink(tempfile);
   dprint (2, (debugfile, "Leaving pgp_encrypted handler\n"));
 
@@ -2550,7 +2547,7 @@ int smime_gpgme_application_handler (BODY *a, STATE *s)
       mutt_free_body (&tattach);
     }
   
-  fclose (fpout);
+  safe_fclose (&fpout);
   mutt_unlink(tempfile);
   dprint (2, (debugfile, "Leaving smime_encrypted handler\n"));
   
@@ -3506,7 +3503,7 @@ verify_key (crypt_key_t *key)
  leave:
   gpgme_key_release (k);
   gpgme_release (listctx);
-  fclose (fp);
+  safe_fclose (&fp);
   mutt_clear_error ();
   snprintf (cmd, sizeof (cmd), _("Key ID: 0x%s"),  crypt_keyid (key));
   mutt_do_pager (cmd, tempfile, 0, NULL);
diff --git a/crypt.c b/crypt.c
index eb2c3e01e768354f37af685b6642b6df60e65ad0..60b594d04b619f5399fcacfb2f7351a309986db3 100644 (file)
--- a/crypt.c
+++ b/crypt.c
@@ -538,7 +538,7 @@ int crypt_write_signed(BODY *a, STATE *s, const char *tempfile)
     fputc (c, fp);
     
   }
-  fclose (fp);
+  safe_fclose (&fp);
 
   return 0;
 }
@@ -613,7 +613,7 @@ void crypt_extract_keys_from_messages (HEADER * h)
        if (Context->hdrs[Context->v2r[i]]->security & ENCRYPT &&
            !crypt_valid_passphrase (Context->hdrs[Context->v2r[i]]->security))
        {
-         fclose (fpout);
+         safe_fclose (&fpout);
          break;
        }
 
@@ -695,7 +695,7 @@ void crypt_extract_keys_from_messages (HEADER * h)
     }
   }
       
-  fclose (fpout);
+  safe_fclose (&fpout);
   if (isendwin())
     mutt_any_key_to_continue (NULL);
 
diff --git a/edit.c b/edit.c
index d952e9a25ec4e7f5915ac44494fed689a114f408..35e45e47b488e26b393c5a4edc2a08ef7e2f0962 100644 (file)
--- a/edit.c
+++ b/edit.c
@@ -109,7 +109,7 @@ be_snarf_file (const char *path, char **buf, int *max, int *len, int verbose)
       snprintf(tmp, sizeof(tmp), "\"%s\" %lu bytes\n", path, (unsigned long) sb.st_size);
       addstr(tmp);
     }
-    fclose (f);
+    safe_fclose (&f);
   }
   else
   {
index 85b75e3143e42a3d751a40710027b40d4a56c870..ecba75442db9eaf236f95c92ca50623b131547f2 100644 (file)
--- a/editmsg.c
+++ b/editmsg.c
@@ -191,7 +191,7 @@ static int edit_one_message (CONTEXT *ctx, HEADER *cur)
   mx_close_mailbox (&tmpctx, NULL);
   
   bail:
-  if (fp) fclose (fp);
+  if (fp) safe_fclose (&fp);
 
   if (rc >= 0)
     unlink (tmp);
index 0bfb198347004677777d7f58426b16bd3d185a55..b7740d50bf89b2cd63c40b768aa7f0c2a1611873 100644 (file)
@@ -373,7 +373,7 @@ pgp_key_t pgp_get_candidates (pgp_ring_t keyring, LIST * hints)
   if (ferror (fp))
     mutt_perror ("fgets");
 
-  fclose (fp);
+  safe_fclose (&fp);
   mutt_wait_filter (thepid);
 
   close (devnull);
index 508aec47f1475aa15375997892972ae9d7518dee..c3572bd3269717bc17aaa0ceb8234c834749fb36 100644 (file)
--- a/handler.c
+++ b/handler.c
@@ -1643,7 +1643,7 @@ int mutt_body_handler (BODY *b, STATE *s)
       {
        b->length = ftello (s->fpout);
        b->offset = 0;
-       fclose (s->fpout);
+       safe_fclose (&s->fpout);
 
        /* restore final destination and substitute the tempfile for input */
        s->fpout = fp;
@@ -1674,7 +1674,7 @@ int mutt_body_handler (BODY *b, STATE *s)
        b->offset = tmpoffset;
 
        /* restore the original source stream */
-       fclose (s->fpin);
+       safe_fclose (&s->fpin);
        s->fpin = fp;
       }
     }
index 8d4a3aa5afc00e95b88421333dc3d5a70b2fcb34..7a102b05e18b59fe77473236af6ee83fa5b5c499 100644 (file)
--- a/headers.c
+++ b/headers.c
@@ -64,8 +64,8 @@ void mutt_edit_headers (const char *editor,
 
   mutt_copy_stream (ifp, ofp);
 
-  fclose (ifp);
-  fclose (ofp);
+  safe_fclose (&ifp);
+  safe_fclose (&ofp);
 
   if (stat (path, &st) == -1)
   {
@@ -98,7 +98,7 @@ void mutt_edit_headers (const char *editor,
   if ((ofp = safe_fopen (body, "w")) == NULL)
   {
     /* intentionally leak a possible temporary file here */
-    fclose (ifp);
+    safe_fclose (&ifp);
     mutt_perror (body);
     return;
   }
@@ -106,8 +106,8 @@ void mutt_edit_headers (const char *editor,
   n = mutt_read_rfc822_header (ifp, NULL, 1, 0);
   while ((i = fread (buffer, 1, sizeof (buffer), ifp)) > 0)
     fwrite (buffer, 1, i, ofp);
-  fclose (ofp);
-  fclose (ifp);
+  safe_fclose (&ofp);
+  safe_fclose (&ifp);
   mutt_unlink (path);
 
   /* restore old info. */
diff --git a/help.c b/help.c
index b0d50f6f198e58892a41c21b8a48ec8853525674..10ad9cf25b1ef670a6ed3a3ddb0420d3a3849f4e 100644 (file)
--- a/help.c
+++ b/help.c
@@ -367,7 +367,7 @@ void mutt_help (int menu)
     if (menu != MENU_PAGER)
       dump_unbound (f, OpGeneric, Keymaps[MENU_GENERIC], Keymaps[menu]);
   
-    fclose (f);
+    safe_fclose (&f);
   
     snprintf (buf, sizeof (buf), _("Help for %s"), desc);
   }
index f8702d4542d1349474883a839c3b785ed8e56c5c..6585aa33026e5b92d481c05e141a8ed14be80056 100644 (file)
--- a/history.c
+++ b/history.c
@@ -90,7 +90,7 @@ void mutt_read_histfile (void)
     }
   }
 
-  fclose (f);
+  safe_fclose (&f);
   FREE (&linebuf);
 }
 
@@ -149,7 +149,7 @@ static void shrink_histfile (void)
   }
 
 cleanup:
-  fclose (f);
+  safe_fclose (&f);
   FREE (&linebuf);
   if (tmp != NULL)
   {
@@ -158,9 +158,9 @@ cleanup:
     {
       rewind (tmp);
       mutt_copy_stream (tmp, f);
-      fclose (f);
+      safe_fclose (&f);
     }
-    fclose (tmp);
+    safe_fclose (&tmp);
     unlink (tmpfname);
   }
 }
@@ -196,7 +196,7 @@ static void save_history (history_class_t hclass, const char *s)
   }
   fputs ("|\n", f);
 
-  fclose (f);
+  safe_fclose (&f);
   FREE (&tmp);
 
   if (--n < 0)
index 5bcd6fb7d7cc6ee603fcd3d615ab282cbf35d901..32d794e637acda836743435f1f1bcf61e7ad6689 100644 (file)
@@ -220,7 +220,7 @@ int imap_read_headers (IMAP_DATA* idata, int msgbegin, int msgend)
         if (h.data)
           imap_free_header_data ((void**) (void*) &h.data);
         imap_hcache_close (idata);
-        fclose (fp);
+        safe_fclose (&fp);
         return -1;
       }
     }
@@ -331,7 +331,7 @@ int imap_read_headers (IMAP_DATA* idata, int msgbegin, int msgend)
 #if USE_HCACHE
       imap_hcache_close (idata);
 #endif
-      fclose (fp);
+      safe_fclose (&fp);
       return -1;
     }
 
@@ -364,7 +364,7 @@ int imap_read_headers (IMAP_DATA* idata, int msgbegin, int msgend)
   imap_hcache_close (idata);
 #endif /* USE_HCACHE */
 
-  fclose(fp);
+  safe_fclose (&fp);
 
   if (ctx->msgcount > oldmsgcount)
   {
@@ -654,7 +654,7 @@ int imap_append_message (CONTEXT *ctx, MESSAGE *msg)
     pc = imap_next_word (pc);
     mutt_error ("%s", pc);
     mutt_sleep (1);
-    fclose (fp);
+    safe_fclose (&fp);
     goto fail;
   }
 
@@ -677,7 +677,7 @@ int imap_append_message (CONTEXT *ctx, MESSAGE *msg)
     flush_buffer(buf, &len, idata->conn);
 
   mutt_socket_write (idata->conn, "\r\n");
-  fclose (fp);
+  safe_fclose (&fp);
 
   do
     rc = imap_cmd_step (idata);
diff --git a/init.c b/init.c
index 199a7f0bce6913b2fe72f1cae30d0b8ef530e5a3..f66d551bf17fb706a11f394d7b07b5d5735d9fbe 100644 (file)
--- a/init.c
+++ b/init.c
@@ -254,7 +254,7 @@ int mutt_extract_token (BUFFER *dest, BUFFER *tok, int flags)
       /* read line */
       memset (&expn, 0, sizeof (expn));
       expn.data = mutt_read_line (NULL, &expn.dsize, fp, &line);
-      fclose (fp);
+      safe_fclose (&fp);
       mutt_wait_filter (pid);
 
       /* if we got output, make a new string consiting of the shell ouptput
@@ -2299,7 +2299,7 @@ static int source_rc (const char *rcfile, BUFFER *err)
   }
   FREE (&token.data);
   FREE (&linebuf);
-  fclose (f);
+  safe_fclose (&f);
   if (pid != -1)
     mutt_wait_filter (pid);
   if (rc)
diff --git a/lib.c b/lib.c
index 146f363f713a31a94571a0838bc473e16872768f..ed5daed26aae23ead05bba1261bd52eeef6b36cb 100644 (file)
--- a/lib.c
+++ b/lib.c
@@ -220,11 +220,10 @@ int safe_fsync_close (FILE **f)
     if (fflush (*f) || fsync (fileno (*f)))
     {
       r = -1;
-      fclose (*f);
+      safe_fclose (f);
     }
     else
-      r = fclose(*f);
-    *f = NULL;
+      r = safe_fclose (f);
   }
 
   return r;
@@ -345,7 +344,7 @@ void mutt_unlink (const char *s)
        fwrite (buf, 1, MIN (sizeof (buf), sb.st_size), f);
        sb.st_size -= MIN (sizeof (buf), sb.st_size);
       }
-      fclose (f);
+      safe_fclose (&f);
     }
   }
 }
diff --git a/main.c b/main.c
index b984d70420ee9a8584b204a1434163aad8b08d7e..d4023ed3875e1ca4efe14dd694e826880a422b52 100644 (file)
--- a/main.c
+++ b/main.c
@@ -909,7 +909,7 @@ int main (int argc, char **argv)
          if (!option (OPTNOCURSES))
            mutt_endwin (NULL);
          perror (tempfile);
-         fclose (fin);
+         safe_fclose (&fin);
          FREE (&tempfile);
          exit (1);
        }
@@ -917,9 +917,9 @@ int main (int argc, char **argv)
          mutt_copy_stream (fin, fout);
        else if (bodytext)
          fputs (bodytext, fout);
-       fclose (fout);
+       safe_fclose (&fout);
        if (fin && fin != stdin)
-         fclose (fin);
+         safe_fclose (&fin);
       }
     }
 
diff --git a/mbox.c b/mbox.c
index ec3a02ffdfd7818407dea35496352d83ac4cbbcb..844da877d915f01ba6e1400be753db8325bacc16 100644 (file)
--- a/mbox.c
+++ b/mbox.c
@@ -877,7 +877,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int *index_hint)
   if (fclose (fp) != 0)
   {
     fp = NULL;
-    dprint(1, (debugfile, "mbox_sync_mailbox: fclose() returned non-zero.\n"));
+    dprint(1, (debugfile, "mbox_sync_mailbox: safe_fclose (&) returned non-zero.\n"));
     unlink (tempfile);
     mutt_perror (tempfile);
     mutt_sleep (5);
@@ -939,7 +939,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int *index_hint)
     }
   }
 
-  fclose (fp);
+  safe_fclose (&fp);
   fp = NULL;
   mbox_unlock_mailbox (ctx);
 
diff --git a/mh.c b/mh.c
index e795a02f762478688920cc9b03d2480c0c1cbd03..e2c5b6952a8ec1775d2fee30de1e1e35a6eca73d 100644 (file)
--- a/mh.c
+++ b/mh.c
@@ -637,7 +637,7 @@ static HEADER *maildir_parse_message (int magic, const char *fname,
     h->env = mutt_read_rfc822_header (f, h, 0, 0);
 
     fstat (fileno (f), &st);
-    fclose (f);
+    safe_fclose (&f);
 
     if (!h->received)
       h->received = h->date_sent;
index 7cf5371d4d434c9479b7d88b55250d520888f4fc..04e9a44c385ed64976cddc85cd563f019e430b04 100644 (file)
@@ -587,7 +587,7 @@ static int check_certificate_by_digest (X509 *peercert)
 
   if (!X509_digest (peercert, EVP_sha1(), peermd, &peermdlen))
   {
-    fclose (fp);
+    safe_fclose (&fp);
     return 0;
   }
 
@@ -599,7 +599,7 @@ static int check_certificate_by_digest (X509 *peercert)
       break;
   }
   X509_free (cert);
-  fclose (fp);
+  safe_fclose (&fp);
 
   return pass;
 }
@@ -925,7 +925,7 @@ static int interactive_check_cert (X509 *cert, int idx, int len)
        {
          if (PEM_write_X509 (fp, cert))
            done = 1;
-         fclose (fp);
+         safe_fclose (&fp);
        }
        if (!done)
         {
index 958d05449dd817161628a21086f9368140a2327b..0895b66db4d823dbf78dbc85705f6a55c2f584f6 100644 (file)
@@ -417,7 +417,7 @@ static int tls_compare_certificates (const gnutls_datum *peercert)
   }
 
   b64_data.size = fread(b64_data.data, 1, b64_data.size, fd1);
-  fclose(fd1);
+  safe_fclose (&fd1);
 
   do {
     ret = gnutls_pem_base64_decode_alloc(NULL, &b64_data, &cert);
@@ -526,7 +526,7 @@ static int tls_check_stored_hostname (const gnutls_datum *cert,
           {
             regfree(&preg);
             FREE(&linestr);
-            fclose(fp);
+            safe_fclose (&fp);
             return 1;
           }
         }
@@ -534,7 +534,7 @@ static int tls_check_stored_hostname (const gnutls_datum *cert,
     }
 
     regfree(&preg);
-    fclose(fp);
+    safe_fclose (&fp);
   }
 
   /* not found a matching name */
@@ -877,7 +877,7 @@ static int tls_check_one_certificate (const gnutls_datum_t *certdata,
               gnutls_free (pemdata.data);
            }
          }
-         fclose (fp);
+         safe_fclose (&fp);
        }
        if (!done)
         {
index d1ce40c057c9325ea3f88eee4686ae39488ba04d..f8f99becf6e557cb3cd56841256db84c3c5bd96b 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1093,7 +1093,7 @@ void mutt_FormatString (char *dest,               /* output buffer */
       if ((pid = mutt_create_filter(command->data, NULL, &filter, NULL)))
       {
         n = fread(dest, 1, destlen /* already decremented */, filter);
-        fclose(filter);
+        safe_fclose (&filter);
         dest[n] = '\0';
         while (dest[n-1] == '\n' || dest[n-1] == '\r')
           dest[--n] = '\0';
diff --git a/pager.c b/pager.c
index 8f8a92b5a4effee0b05f692e9b4b3827c5a7acba..38f2e9e5bdaa571d1a25581efc8d2848c948b493 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -1542,7 +1542,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t *extra)
   if (stat (fname, &sb) != 0)
   {
     mutt_perror (fname);
-    fclose (fp);
+    safe_fclose (&fp);
     return (-1);
   }
   unlink (fname);
@@ -2677,7 +2677,7 @@ search_next:
     }
   }
 
-  fclose (fp);
+  safe_fclose (&fp);
   if (IsHeader (extra))
   {
     Context->msgnotreadyet = -1;
index b092de8670e76cf8a5feb2663142ad2d09bd7749..e693c02f6f31961fc307aa73aefb254a12e9eb45 100644 (file)
--- a/pattern.c
+++ b/pattern.c
@@ -182,7 +182,7 @@ msg_search (CONTEXT *ctx, pattern_t* pat, int msgno)
          mx_close_message (&msg);
          if (s.fpout)
          {
-           fclose (s.fpout);
+           safe_fclose (&s.fpout);
            unlink (tempfile);
          }
          return (0);
@@ -242,7 +242,7 @@ msg_search (CONTEXT *ctx, pattern_t* pat, int msgno)
 
     if (option (OPTTHOROUGHSRC))
     {
-      fclose (fp);
+      safe_fclose (&fp);
       unlink (tempfile);
     }
   }
diff --git a/pgp.c b/pgp.c
index 32018e97670b8a1a9a05890828ba13fe3c1478dd..8835d9ae7f996ffa68415a00a346d6bcce1652e1 100644 (file)
--- a/pgp.c
+++ b/pgp.c
@@ -605,7 +605,7 @@ int pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)
        
   fseeko (s->fpin, sigbdy->offset, 0);
   mutt_copy_bytes (s->fpin, fp, sigbdy->length);
-  fclose (fp);
+  safe_fclose (&fp);
   
   mutt_mktemp(pgperrfile);
   if(!(pgperr = safe_fopen(pgperrfile, "w+")))
@@ -685,7 +685,7 @@ void pgp_extract_keys_from_messages (HEADER *h)
        if (Context->hdrs[Context->v2r[i]]->security & PGPENCRYPT
           && !pgp_valid_passphrase())
        {
-         fclose (fpout);
+         safe_fclose (&fpout);
          goto bailout;
        }
        mutt_copy_message (fpout, Context, Context->hdrs[Context->v2r[i]], 
@@ -698,13 +698,13 @@ void pgp_extract_keys_from_messages (HEADER *h)
     mutt_parse_mime_message (Context, h);
     if (h->security & PGPENCRYPT && !pgp_valid_passphrase())
     {
-      fclose (fpout);
+      safe_fclose (&fpout);
       goto bailout;
     }
     mutt_copy_message (fpout, Context, h, M_CM_DECODE|M_CM_CHARCONV, 0);
   }
       
-  fclose (fpout);
+  safe_fclose (&fpout);
   mutt_endwin (NULL);
   pgp_invoke_import (tempfname);
   mutt_any_key_to_continue (NULL);
@@ -736,7 +736,7 @@ static void pgp_extract_keys_from_attachment (FILE *fp, BODY *top)
   
   mutt_body_handler (top, &s);
 
-  fclose (tempfp);
+  safe_fclose (&tempfp);
 
   pgp_invoke_import (tempfname);
   mutt_any_key_to_continue (NULL);
@@ -791,7 +791,7 @@ BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)
   if((pgptmp = safe_fopen (pgptmpfile, "w")) == NULL)
   {
     mutt_perror (pgptmpfile);
-    fclose(pgperr);
+    safe_fclose (&pgperr);
     return NULL;
   }
 
@@ -801,12 +801,12 @@ BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)
 
   fseeko (s->fpin, a->offset, 0);
   mutt_copy_bytes (s->fpin, pgptmp, a->length);
-  fclose (pgptmp);
+  safe_fclose (&pgptmp);
 
   if ((thepid = pgp_invoke_decrypt (&pgpin, &pgpout, NULL, -1, -1,
                                    fileno (pgperr), pgptmpfile)) == -1)
   {
-    fclose (pgperr);
+    safe_fclose (&pgperr);
     unlink (pgptmpfile);
     if (s->flags & M_DISPLAY)
       state_attach_puts (_("[-- Error: could not create a PGP subprocess! --]\n\n"), s);
@@ -819,7 +819,7 @@ BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)
   if (!pgp_use_gpg_agent())
     fputs (PgpPass, pgpin);
   fputc ('\n', pgpin);
-  fclose(pgpin);
+  safe_fclose (&pgpin);
   
   /* Read the output from PGP, and make sure to change CRLF to LF, otherwise
    * read_mime_header has a hard time parsing the message.
@@ -832,7 +832,7 @@ BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)
     fputs (buf, fpout);
   }
 
-  fclose (pgpout);
+  safe_fclose (&pgpout);
   rv = mutt_wait_filter (thepid);
   mutt_unlink(pgptmpfile);
   
@@ -846,7 +846,7 @@ BODY *pgp_decrypt_part (BODY *a, STATE *s, FILE *fpout, BODY *p)
       p->goodsig = 0;
     state_attach_puts (_("[-- End of PGP output --]\n\n"), s);
   }
-  fclose (pgperr);
+  safe_fclose (&pgperr);
 
   fflush (fpout);
   rewind (fpout);
@@ -985,7 +985,7 @@ int pgp_encrypted_handler (BODY *a, STATE *s)
     rc = -1;
   }
 
-  fclose (fpout);
+  safe_fclose (&fpout);
   mutt_unlink(tempfile);
 
   return rc;
@@ -1018,7 +1018,7 @@ BODY *pgp_sign_message (BODY *a)
   if ((sfp = safe_fopen(signedfile, "w")) == NULL)
   {
     mutt_perror(signedfile);
-    fclose(fp);
+    safe_fclose (&fp);
     unlink(sigfile);
     return NULL;
   }
@@ -1026,13 +1026,13 @@ BODY *pgp_sign_message (BODY *a)
   mutt_write_mime_header (a, sfp);
   fputc ('\n', sfp);
   mutt_write_mime_body (a, sfp);
-  fclose(sfp);
+  safe_fclose (&sfp);
   
   if ((thepid = pgp_invoke_sign (&pgpin, &pgpout, &pgperr,
                                 -1, -1, -1, signedfile)) == -1)
   {
     mutt_perror _("Can't open PGP subprocess!");
-    fclose(fp);
+    safe_fclose (&fp);
     unlink(sigfile);
     unlink(signedfile);
     return NULL;
@@ -1041,7 +1041,7 @@ BODY *pgp_sign_message (BODY *a)
   if (!pgp_use_gpg_agent())
      fputs(PgpPass, pgpin);
   fputc('\n', pgpin);
-  fclose(pgpin);
+  safe_fclose (&pgpin);
   
   /*
    * Read back the PGP signature.  Also, change MESSAGE=>SIGNATURE as
@@ -1069,8 +1069,8 @@ BODY *pgp_sign_message (BODY *a)
   if(mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))
     empty=1;
 
-  fclose (pgperr);
-  fclose (pgpout);
+  safe_fclose (&pgperr);
+  safe_fclose (&pgpout);
   unlink (signedfile);
   
   if (fclose (fp) != 0)
@@ -1268,7 +1268,7 @@ BODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)
   {
     mutt_perror (pgperrfile);
     unlink(tempfile);
-    fclose(fpout);
+    safe_fclose (&fpout);
     return NULL;
   }
   unlink (pgperrfile);
@@ -1278,8 +1278,8 @@ BODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)
   {
     mutt_perror(pgpinfile);
     unlink(tempfile);
-    fclose(fpout);
-    fclose(pgperr);
+    safe_fclose (&fpout);
+    safe_fclose (&pgperr);
     return NULL;
   }
   
@@ -1289,13 +1289,13 @@ BODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)
   mutt_write_mime_header (a, fptmp);
   fputc ('\n', fptmp);
   mutt_write_mime_body (a, fptmp);
-  fclose(fptmp);
+  safe_fclose (&fptmp);
   
   if ((thepid = pgp_invoke_encrypt (&pgpin, NULL, NULL, -1, 
                                    fileno (fpout), fileno (pgperr),
                                    pgpinfile, keylist, sign)) == -1)
   {
-    fclose (pgperr);
+    safe_fclose (&pgperr);
     unlink(pgpinfile);
     return (NULL);
   }
@@ -1306,7 +1306,7 @@ BODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)
        fputs (PgpPass, pgpin);
     fputc ('\n', pgpin);
   }
-  fclose(pgpin);
+  safe_fclose (&pgpin);
   
   if(mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))
     empty=1;
@@ -1317,7 +1317,7 @@ BODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)
   rewind (fpout);
   if(!empty)
     empty = (fgetc (fpout) == EOF);
-  fclose (fpout);
+  safe_fclose (&fpout);
 
   fflush (pgperr);
   rewind (pgperr);
@@ -1326,7 +1326,7 @@ BODY *pgp_encrypt_message (BODY *a, char *keylist, int sign)
     err = 1;
     fputs (buf, stdout);
   }
-  fclose (pgperr);
+  safe_fclose (&pgperr);
 
   /* pause if there is any error output from PGP */
   if (err)
@@ -1406,7 +1406,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
   if ((pgpin = safe_fopen (pgpinfile, "w")) == NULL)
   {
     mutt_perror (pgpinfile);
-    fclose (fp);
+    safe_fclose (&fp);
     return NULL;
   }
 
@@ -1445,7 +1445,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
     mutt_copy_stream (fp, pgpin);
   }
   safe_fclose (&fp);
-  fclose (pgpin);
+  safe_fclose (&pgpin);
 
   mutt_mktemp (pgpoutfile);
   mutt_mktemp (pgperrfile);
@@ -1456,7 +1456,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
     unlink (pgpinfile);
     if (pgpout) 
     {
-      fclose (pgpout);
+      safe_fclose (&pgpout);
       unlink (pgpoutfile);
     }
     return NULL;
@@ -1469,8 +1469,8 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
                                        pgpinfile, keylist, flags)) == -1)
   {
     mutt_perror _("Can't invoke PGP");
-    fclose (pgpout);
-    fclose (pgperr);
+    safe_fclose (&pgpout);
+    safe_fclose (&pgperr);
     mutt_unlink (pgpinfile);
     unlink (pgpoutfile);
     return NULL;
@@ -1480,7 +1480,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
     *PgpPass = 0;
   if (flags & SIGN)
     fprintf (pgpin, "%s\n", PgpPass);
-  fclose (pgpin);
+  safe_fclose (&pgpin);
 
   if(mutt_wait_filter (thepid) && option(OPTPGPCHECKEXIT))
     empty=1;
@@ -1495,7 +1495,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
   
   if(!empty)
     empty = (fgetc (pgpout) == EOF);
-  fclose (pgpout);
+  safe_fclose (&pgpout);
   
   err = 0;
   
@@ -1505,7 +1505,7 @@ BODY *pgp_traditional_encryptsign (BODY *a, int flags, char *keylist)
     fputs (buff, stdout);
   }
   
-  fclose (pgperr);
+  safe_fclose (&pgperr);
   
   if (err)
     mutt_any_key_to_continue (NULL);
index 3d81932b9d43b9e962df2712e4929d6280ee891b..9f04df3094a832c4d43bc6e45769f5794f75709b 100644 (file)
--- a/pgpkey.c
+++ b/pgpkey.c
@@ -555,7 +555,7 @@ static pgp_key_t pgp_select_key (pgp_key_t keys,
       }
       if ((fp = safe_fopen (tempfile, "w")) == NULL)
       {
-       fclose (devnull);
+       safe_fclose (&devnull);
        mutt_perror _("Can't create temporary file");
        break;
       }
@@ -569,13 +569,13 @@ static pgp_key_t pgp_select_key (pgp_key_t keys,
       {
        mutt_perror _("Can't create filter");
        unlink (tempfile);
-       fclose (fp);
-       fclose (devnull);
+       safe_fclose (&fp);
+       safe_fclose (&devnull);
       }
 
       mutt_wait_filter (thepid);
-      fclose (fp);
-      fclose (devnull);
+      safe_fclose (&fp);
+      safe_fclose (&devnull);
       mutt_clear_error ();
       snprintf (cmd, sizeof (cmd), _("Key ID: 0x%s"), 
                pgp_keyid (pgp_principal_key (KeyTable[menu->current]->parent)));
@@ -743,7 +743,7 @@ BODY *pgp_make_key_attachment (char *tempf)
   if ((devnull = fopen ("/dev/null", "w")) == NULL)    /* __FOPEN_CHECKED__ */
   {
     mutt_perror _("Can't open /dev/null");
-    fclose (tempfp);
+    safe_fclose (&tempfp);
     if (tempf == tempfb)
       unlink (tempf);
     return NULL;
@@ -758,15 +758,15 @@ BODY *pgp_make_key_attachment (char *tempf)
   {
     mutt_perror _("Can't create filter");
     unlink (tempf);
-    fclose (tempfp);
-    fclose (devnull);
+    safe_fclose (&tempfp);
+    safe_fclose (&devnull);
     return NULL;
   }
 
   mutt_wait_filter (thepid);
 
-  fclose (tempfp);
-  fclose (devnull);
+  safe_fclose (&tempfp);
+  safe_fclose (&devnull);
 
   att = mutt_new_body ();
   att->filename = safe_strdup (tempf);
index 358e3b7d6fcc25b2c4cfa1311b5b4749bba4ff24..b85dca0e5723590c7e9b78a89d7adc21d3347d66 100644 (file)
@@ -815,7 +815,7 @@ static void pgpring_find_candidates (char *ringfile, const char *hints[], int nh
     FGETPOS(rfp,pos);
   }
 
-  fclose (rfp);
+  safe_fclose (&rfp);
 
 }
 
diff --git a/pop.c b/pop.c
index 34a0f63dbff2e65274f569d61b2dfcbf752220cd..674064535ef356cc5c42e4932e3f56b942550806 100644 (file)
--- a/pop.c
+++ b/pop.c
@@ -130,7 +130,7 @@ static int pop_read_header (POP_DATA *pop_data, HEADER *h)
     }
   }
 
-  fclose (f);
+  safe_fclose (&f);
   unlink (tempfile);
   return ret;
 }
index 12bc7cc5e72d0deb8d3d8ec6620d8f8f26beac20..dae6964421d3e937ad87365217a180d72f6836bb 100644 (file)
@@ -705,7 +705,7 @@ int mutt_prepare_template (FILE *fp, CONTEXT *ctx, HEADER *newhdr, HEADER *hdr,
   bail:
   
   /* that's it. */
-  if (bfp != fp) fclose (bfp);
+  if (bfp != fp) safe_fclose (&bfp);
   if (msg) mx_close_message (&msg);
   
   if (rv == -1)
diff --git a/query.c b/query.c
index 7006aa6a323248af05cf1a8b0e0acd8ea0dd9575..19dbc19ae2d93e691c5c3fba6473574de888c4e8 100644 (file)
--- a/query.c
+++ b/query.c
@@ -123,7 +123,7 @@ static QUERY *run_query (char *s, int quiet)
     }
   }
   FREE (&buf);
-  fclose (fp);
+  safe_fclose (&fp);
   if (mutt_wait_filter (thepid))
   {
     dprint (1, (debugfile, "Error: %s\n", msg));
index 86448ff7dbaf8d49fea755a0a45a6d995a0aba39..04ab50c27baa36d4b9174c3c682e5ccecb695a1f 100644 (file)
@@ -518,7 +518,7 @@ void mutt_save_attachment_list (FILE *fp, int tag, BODY *top, HEADER *hdr, MUTTM
          if (rc == 0 && AttachSep && (fpout = fopen (tfile,"a")) != NULL)
          {
            fprintf(fpout, "%s", AttachSep);
-           fclose (fpout);
+           safe_fclose (&fpout);
          }
        }
        else
@@ -527,7 +527,7 @@ void mutt_save_attachment_list (FILE *fp, int tag, BODY *top, HEADER *hdr, MUTTM
          if (rc == 0 && AttachSep && (fpout = fopen (tfile,"a")) != NULL)
          {
            fprintf(fpout, "%s", AttachSep);
-           fclose (fpout);
+           safe_fclose (&fpout);
          }
        }
       }
@@ -622,7 +622,7 @@ static void pipe_attachment (FILE *fp, BODY *b, STATE *state)
       return;
     }
     mutt_copy_stream (ifp, state->fpout);
-    fclose (ifp);
+    safe_fclose (&ifp);
     if (AttachSep)
       state_puts (AttachSep, state);
   }
@@ -671,7 +671,7 @@ void mutt_pipe_attachment_list (FILE *fp, int tag, BODY *top, int filter)
     mutt_endwin (NULL);
     thepid = mutt_create_filter (buf, &state.fpout, NULL, NULL);
     pipe_attachment_list (buf, fp, tag, top, filter, &state);
-    fclose (state.fpout);
+    safe_fclose (&state.fpout);
     if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY))
       mutt_any_key_to_continue (NULL);
   }
@@ -737,7 +737,7 @@ static void print_attachment_list (FILE *fp, int tag, BODY *top, STATE *state)
            if ((ifp = fopen (newfile, "r")) != NULL)
            {
              mutt_copy_stream (ifp, state->fpout);
-             fclose (ifp);
+             safe_fclose (&ifp);
              if (AttachSep)
                state_puts (AttachSep, state);
            }
@@ -771,7 +771,7 @@ void mutt_print_attachment_list (FILE *fp, int tag, BODY *top)
     memset (&state, 0, sizeof (STATE));
     thepid = mutt_create_filter (NONULL (PrintCmd), &state.fpout, NULL, NULL);
     print_attachment_list (fp, tag, top, &state);
-    fclose (state.fpout);
+    safe_fclose (&state.fpout);
     if (mutt_wait_filter (thepid) != 0 || option (OPTWAITKEY))
       mutt_any_key_to_continue (NULL);
   }
@@ -1242,7 +1242,7 @@ void mutt_view_attachments (HEADER *hdr)
 
         if (WithCrypto && need_secured && secured)
        {
-         fclose (fp);
+         safe_fclose (&fp);
          mutt_free_body (&cur);
        }
 
index 26312d69c7f143203cd23db0e2005341f39f2560..05829a4711d724b3159daa84916caa72c6d69f7d 100644 (file)
--- a/recvcmd.c
+++ b/recvcmd.c
@@ -515,7 +515,7 @@ _("Can't decode all tagged attachments.  MIME-forward the others?"))) == -1)
   
   mutt_forward_trailer (tmpfp);
   
-  fclose (tmpfp);
+  safe_fclose (&tmpfp);
   tmpfp = NULL;
 
   /* now that we have the template, send it. */
@@ -526,7 +526,7 @@ _("Can't decode all tagged attachments.  MIME-forward the others?"))) == -1)
   
   if (tmpfp)
   {
-    fclose (tmpfp);
+    safe_fclose (&tmpfp);
     mutt_unlink (tmpbody);
   }
 
@@ -631,7 +631,7 @@ static void attach_forward_msgs (FILE * fp, HEADER * hdr,
        }
       }
     }
-    fclose (tmpfp);
+    safe_fclose (&tmpfp);
   }
   else if (rc == M_YES)        /* do MIME encapsulation - we don't need to do much here */
   {
@@ -907,12 +907,12 @@ void mutt_attach_reply (FILE * fp, HEADER * hdr,
        copy_problematic_attachments (fp, &tmphdr->content, idx, idxlen, 0) == NULL)
     {
       mutt_free_header (&tmphdr);
-      fclose (tmpfp);
+      safe_fclose (&tmpfp);
       return;
     }
   }
 
-  fclose (tmpfp);
+  safe_fclose (&tmpfp);
   
   if (ci_send_message (flags, tmphdr, tmpbody, NULL, parent) == 0)
     mutt_set_flag (Context, hdr, M_REPLIED, 1);
index e04a9b06644272cc090108a721e76bb59dfc2d61..528787085ab79cffb6316c8753324a6314f86535 100644 (file)
--- a/rfc1524.c
+++ b/rfc1524.c
@@ -346,7 +346,7 @@ static int rfc1524_mailcap_parse (BODY *a,
        }
       }
     } /* while (!found && (buf = mutt_read_line ())) */
-    fclose (fp);
+    safe_fclose (&fp);
   } /* if ((fp = fopen ())) */
   FREE (&buf);
   return found;
@@ -581,12 +581,12 @@ int mutt_rename_file (char *oldfile, char *newfile)
     return 3;
   if ((nfp = safe_fopen (newfile,"w")) == NULL)
   {
-    fclose(ofp);
+    safe_fclose (&ofp);
     return 3;
   }
   mutt_copy_stream (ofp,nfp);
-  fclose (nfp);
-  fclose (ofp);
+  safe_fclose (&nfp);
+  safe_fclose (&ofp);
   mutt_unlink (oldfile);
   return 0;
 }
index 4de8ba7c09502c29e8441c2ada07cf8819fba905..8bcef2bc78ae2124c7a85f19990980d5d8fdc39c 100644 (file)
--- a/rfc3676.c
+++ b/rfc3676.c
@@ -270,7 +270,7 @@ void rfc3676_space_stuff (HEADER* hdr)
   mutt_mktemp (tmpfile);
   if ((out = safe_fopen (tmpfile, "w+")) == NULL)
   {
-    fclose (in);
+    safe_fclose (&in);
     return;
   }
 
@@ -294,8 +294,8 @@ void rfc3676_space_stuff (HEADER* hdr)
     }
     fputs (buf, out);
   }
-  fclose (in);
-  fclose (out);
+  safe_fclose (&in);
+  safe_fclose (&out);
   mutt_set_mtime (hdr->content->filename, tmpfile);
   unlink (hdr->content->filename);
   mutt_str_replace (&hdr->content->filename, tmpfile);
diff --git a/send.c b/send.c
index 8b47f2c646a5239337e1387d82717ef42d612c28..6bd61487b840e56eb71694f5996f479a46faed07 100644 (file)
--- a/send.c
+++ b/send.c
@@ -59,7 +59,7 @@ static void append_signature (FILE *f)
     if (option (OPTSIGDASHES))
       fputs ("\n-- \n", f);
     mutt_copy_stream (tmpfp, f);
-    fclose (tmpfp);
+    safe_fclose (&tmpfp);
     if (thepid != -1)
       mutt_wait_filter (thepid);
   }
@@ -997,7 +997,7 @@ static int send_message (HEADER *msg)
 
   if ((mutt_write_mime_body (msg->content, tempfp) == -1))
   {
-    fclose(tempfp);
+    safe_fclose (&tempfp);
     unlink (tempfile);
     return (-1);
   }
index c56b64be0ae94b793246645125ab545329e1645c..1c9c352d4cfc47bde6c173aa86778210cda6c31d 100644 (file)
--- a/sendlib.c
+++ b/sendlib.c
@@ -458,7 +458,7 @@ int mutt_write_mime_body (BODY *a, FILE *f)
     mutt_copy_stream (fpin, f);
 
   fgetconv_close (&fc);
-  fclose (fpin);
+  safe_fclose (&fpin);
 
   return (ferror (f) ? -1 : 0);
 }
@@ -1004,7 +1004,7 @@ int mutt_lookup_mime_type (BODY *att, const char *path)
          p = NULL;
        }
       }
-      fclose (f);
+      safe_fclose (&f);
     }
   }
   
@@ -1041,7 +1041,7 @@ void mutt_message_to_7bit (BODY *a, FILE *fp)
     if (stat (a->filename, &sb) == -1)
     {
       mutt_perror ("stat");
-      fclose (fpin);
+      safe_fclose (&fpin);
     }
     a->length = sb.st_size;
   }
@@ -1070,9 +1070,9 @@ void mutt_message_to_7bit (BODY *a, FILE *fp)
   FREE (&line);
 
   if (fpin && !fp)
-    fclose (fpin);
+    safe_fclose (&fpin);
   if (fpout)
-    fclose (fpout);
+    safe_fclose (&fpout);
   else
     return;
   
@@ -1125,7 +1125,7 @@ static void transform_to_7bit (BODY *a, FILE *fpin)
       }
       s.fpin = fpin;
       mutt_decode_attachment (a, &s);
-      fclose (s.fpout);
+      safe_fclose (&s.fpout);
       a->d_filename = a->filename;
       a->filename = safe_strdup (buff);
       a->unlink = 1;
@@ -1328,7 +1328,7 @@ BODY *mutt_make_message_attach (CONTEXT *ctx, HEADER *hdr, int attach_msg)
   mutt_update_encoding (body);
   body->parts = body->hdr->content;
 
-  fclose(fp);
+  safe_fclose (&fp);
   
   return (body);
 }
@@ -2604,7 +2604,7 @@ int mutt_write_fcc (const char *path, HEADER *hdr, const char *msgid, int post,
     if (ferror (tempfp))
     {
       dprint (1, (debugfile, "mutt_write_fcc(): %s: write failed.\n", tempfile));
-      fclose (tempfp);
+      safe_fclose (&tempfp);
       unlink (tempfile);
       mx_commit_message (msg, &f);     /* XXX - really? */
       mx_close_message (&msg);
diff --git a/smime.c b/smime.c
index cda57b0e8aaf24b4a56e6177905c5406fe9fd70f..95facec126f9dfbadb5151fae0ae76ab0581ba45 100644 (file)
--- a/smime.c
+++ b/smime.c
@@ -381,7 +381,7 @@ char* smime_ask_for_key (char *prompt, char *mailbox, short public)
   while (!feof(index)) {
     if (fgets(buf, sizeof(buf), index)) cert_num++;
   }
-  fclose(index);
+  safe_fclose (&index);
 
   FOREVER
   {
@@ -425,7 +425,7 @@ char* smime_ask_for_key (char *prompt, char *mailbox, short public)
   
       cur++;
     }
-    fclose(index);
+    safe_fclose (&index);
   
     /* Make Helpstring */
     helpstr[0] = 0;
@@ -836,7 +836,7 @@ static int smime_handle_cert_email (char *certificate, char *mailbox,
   mutt_mktemp (tmpfname);
   if ((fpout = safe_fopen (tmpfname, "w+")) == NULL)
   {
-    fclose (fperr);
+    safe_fclose (&fperr);
     mutt_perror (tmpfname);
     return 1;
   }
@@ -848,8 +848,8 @@ static int smime_handle_cert_email (char *certificate, char *mailbox,
                               SmimeGetCertEmailCommand))== -1)
   {
     mutt_message (_("Error: unable to create OpenSSL subprocess!"));
-    fclose (fperr);
-    fclose (fpout);
+    safe_fclose (&fperr);
+    safe_fclose (&fpout);
     return 1;
   }
 
@@ -899,8 +899,8 @@ static int smime_handle_cert_email (char *certificate, char *mailbox,
   }
   else if(copy) ret = 2;
 
-  fclose (fpout);
-  fclose (fperr);
+  safe_fclose (&fpout);
+  safe_fclose (&fperr);
 
   return ret;
 }
@@ -927,7 +927,7 @@ static char *smime_extract_certificate (char *infile)
   mutt_mktemp (pk7out);
   if ((fpout = safe_fopen (pk7out, "w+")) == NULL)
   {
-    fclose (fperr);
+    safe_fclose (&fperr);
     mutt_perror (pk7out);
     return NULL;
   }
@@ -941,8 +941,8 @@ static char *smime_extract_certificate (char *infile)
                               SmimePk7outCommand))== -1)
   {
     mutt_any_key_to_continue (_("Error: unable to create OpenSSL subprocess!"));
-    fclose (fperr);
-    fclose (fpout);
+    safe_fclose (&fperr);
+    safe_fclose (&fpout);
     mutt_unlink (pk7out);
     return NULL;
   }
@@ -959,19 +959,19 @@ static char *smime_extract_certificate (char *infile)
   {
     mutt_perror (pk7out);
     mutt_copy_stream (fperr, stdout);
-    fclose (fpout);
-    fclose (fperr);
+    safe_fclose (&fpout);
+    safe_fclose (&fperr);
     mutt_unlink (pk7out);
     return NULL;
     
   }
 
 
-  fclose (fpout);
+  safe_fclose (&fpout);
   mutt_mktemp (certfile);
   if ((fpout = safe_fopen (certfile, "w+")) == NULL)
   {
-    fclose (fperr);
+    safe_fclose (&fperr);
     mutt_unlink (pk7out);
     mutt_perror (certfile);
     return NULL;
@@ -985,8 +985,8 @@ static char *smime_extract_certificate (char *infile)
                               SmimeGetCertCommand))== -1)
   {
     mutt_any_key_to_continue (_("Error: unable to create OpenSSL subprocess!"));
-    fclose (fperr);
-    fclose (fpout);
+    safe_fclose (&fperr);
+    safe_fclose (&fpout);
     mutt_unlink (pk7out);
     mutt_unlink (certfile);
     return NULL;
@@ -1004,14 +1004,14 @@ static char *smime_extract_certificate (char *infile)
   if (empty)
   {
     mutt_copy_stream (fperr, stdout);
-    fclose (fpout);
-    fclose (fperr);
+    safe_fclose (&fpout);
+    safe_fclose (&fperr);
     mutt_unlink (certfile);
     return NULL;
   }
 
-  fclose (fpout);
-  fclose (fperr);
+  safe_fclose (&fpout);
+  safe_fclose (&fperr);
 
   return safe_strdup (certfile);
 }
@@ -1037,7 +1037,7 @@ static char *smime_extract_signer_certificate (char *infile)
   mutt_mktemp (certfile);
   if ((fpout = safe_fopen (certfile, "w+")) == NULL)
   {
-    fclose (fperr);
+    safe_fclose (&fperr);
     mutt_perror (certfile);
     return NULL;
   }
@@ -1050,8 +1050,8 @@ static char *smime_extract_signer_certificate (char *infile)
                               SmimeGetSignerCertCommand))== -1)
   {
     mutt_any_key_to_continue (_("Error: unable to create OpenSSL subprocess!"));
-    fclose (fperr);
-    fclose (fpout);
+    safe_fclose (&fperr);
+    safe_fclose (&fpout);
     mutt_unlink (pk7out);
     mutt_unlink (certfile);
     return NULL;
@@ -1069,14 +1069,14 @@ static char *smime_extract_signer_certificate (char *infile)
     mutt_endwin (NULL);
     mutt_copy_stream (fperr, stdout);
     mutt_any_key_to_continue (NULL);
-    fclose (fpout);
-    fclose (fperr);
+    safe_fclose (&fpout);
+    safe_fclose (&fperr);
     mutt_unlink (certfile);
     return NULL;
   }
 
-  fclose (fpout);
-  fclose (fperr);
+  safe_fclose (&fpout);
+  safe_fclose (&fperr);
 
   return safe_strdup (certfile);
 }
@@ -1103,7 +1103,7 @@ void smime_invoke_import (char *infile, char *mailbox)
   mutt_mktemp (tmpfname);
   if ((fpout = safe_fopen (tmpfname, "w+")) == NULL)
   {
-    fclose (fperr);
+    safe_fclose (&fperr);
     mutt_perror (tmpfname);
     return;
   }
@@ -1129,7 +1129,7 @@ void smime_invoke_import (char *infile, char *mailbox)
     }
     fputs (buf, smimein);
     fputc ('\n', smimein);
-    fclose(smimein);
+    safe_fclose (&smimein);
 
     mutt_wait_filter (thepid);
   
@@ -1145,8 +1145,8 @@ void smime_invoke_import (char *infile, char *mailbox)
   mutt_copy_stream (fpout, stdout);
   mutt_copy_stream (fperr, stdout);
 
-  fclose (fpout);
-  fclose (fperr);
+  safe_fclose (&fpout);
+  safe_fclose (&fperr);
 
 }
 
@@ -1173,7 +1173,7 @@ int smime_verify_sender(HEADER *h)
     mutt_copy_message (fpout, Context, h, 0, 0);
 
   fflush(fpout);
-  fclose (fpout);
+  safe_fclose (&fpout);
 
   if (h->env->from)
   {
@@ -1274,7 +1274,7 @@ BODY *smime_build_smime_entity (BODY *a, char *certlist)
   if ((smimeerr = safe_fopen (smimeerrfile, "w+")) == NULL)
   {
     mutt_perror (smimeerrfile);
-    fclose (fpout);
+    safe_fclose (&fpout);
     mutt_unlink (tempfile);
     return NULL;
   }
@@ -1285,8 +1285,8 @@ BODY *smime_build_smime_entity (BODY *a, char *certlist)
   {
     mutt_perror (smimeinfile);
     mutt_unlink (tempfile);
-    fclose (fpout);
-    fclose (smimeerr);
+    safe_fclose (&fpout);
+    safe_fclose (&smimeerr);
     return NULL;
   }
 
@@ -1308,20 +1308,20 @@ BODY *smime_build_smime_entity (BODY *a, char *certlist)
   mutt_write_mime_header (a, fptmp);
   fputc ('\n', fptmp);
   mutt_write_mime_body (a, fptmp);
-  fclose (fptmp);
+  safe_fclose (&fptmp);
 
   if ((thepid =
        smime_invoke_encrypt (&smimein, NULL, NULL, -1,
                             fileno (fpout), fileno (smimeerr),
                             smimeinfile, certfile)) == -1)
   {
-    fclose (smimeerr);
+    safe_fclose (&smimeerr);
     mutt_unlink (smimeinfile);
     mutt_unlink (certfile);
     return (NULL);
   }
 
-  fclose (smimein);
+  safe_fclose (&smimein);
   
   mutt_wait_filter (thepid);
   mutt_unlink (smimeinfile);
@@ -1330,7 +1330,7 @@ BODY *smime_build_smime_entity (BODY *a, char *certlist)
   fflush (fpout);
   rewind (fpout);
   empty = (fgetc (fpout) == EOF);
-  fclose (fpout);
+  safe_fclose (&fpout);
  
   fflush (smimeerr);
   rewind (smimeerr);
@@ -1339,7 +1339,7 @@ BODY *smime_build_smime_entity (BODY *a, char *certlist)
     err = 1;
     fputs (buf, stdout);
   }
-  fclose (smimeerr);
+  safe_fclose (&smimeerr);
 
   /* pause if there is any error output from SMIME */
   if (err)
@@ -1409,7 +1409,7 @@ BODY *smime_sign_message (BODY *a )
   if ((smimeout = safe_fopen (signedfile, "w+")) == NULL)
   {
     mutt_perror (signedfile);
-    fclose (sfp);
+    safe_fclose (&sfp);
     mutt_unlink (filetosign);
     return NULL;
   }
@@ -1417,7 +1417,7 @@ BODY *smime_sign_message (BODY *a )
   mutt_write_mime_header (a, sfp);
   fputc ('\n', sfp);
   mutt_write_mime_body (a, sfp);
-  fclose (sfp);
+  safe_fclose (&sfp);
 
   
 
@@ -1436,14 +1436,14 @@ BODY *smime_sign_message (BODY *a )
                                 -1, fileno (smimeout), -1, filetosign)) == -1)
   {
     mutt_perror _("Can't open OpenSSL subprocess!");
-    fclose (smimeout);
+    safe_fclose (&smimeout);
     mutt_unlink (signedfile);
     mutt_unlink (filetosign);
     return NULL;
   }
   fputs (SmimePass, smimein);
   fputc ('\n', smimein);
-  fclose (smimein);
+  safe_fclose (&smimein);
   
 
   mutt_wait_filter (thepid);
@@ -1457,13 +1457,13 @@ BODY *smime_sign_message (BODY *a )
     err = 1;
     fputs (buffer, stdout);
   }
-  fclose (smimeerr);
+  safe_fclose (&smimeerr);
 
 
   fflush (smimeout);
   rewind (smimeout);
   empty = (fgetc (smimeout) == EOF);
-  fclose (smimeout);
+  safe_fclose (&smimeout);
 
   mutt_unlink (filetosign);
   
@@ -1584,7 +1584,7 @@ int smime_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)
 
   sigbdy->length = ftello (s->fpout);
   sigbdy->offset = 0;
-  fclose (s->fpout);
+  safe_fclose (&s->fpout);
 
   /* restore final destination and substitute the tempfile for input */
   s->fpout = fp;
@@ -1612,7 +1612,7 @@ int smime_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)
                                   tempfile, signedfile, 0)) != -1)
   {
     fflush (smimeout);
-    fclose (smimeout);
+    safe_fclose (&smimeout);
       
     if (mutt_wait_filter (thepid))
       badsig = -1;
@@ -1636,7 +1636,7 @@ int smime_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)
   fflush (smimeerr);
   rewind (smimeerr);
   mutt_copy_stream (smimeerr, s->fpout);
-  fclose (smimeerr);
+  safe_fclose (&smimeerr);
     
   state_attach_puts (_("[-- End of OpenSSL output --]\n\n"), s);
   
@@ -1647,7 +1647,7 @@ int smime_verify_one (BODY *sigbdy, STATE *s, const char *tempfile)
   sigbdy->offset = tmpoffset;
   
   /* restore the original source stream */
-  fclose (s->fpin);
+  safe_fclose (&s->fpin);
   s->fpin = fp;
   
 
@@ -1692,7 +1692,7 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
   if ((smimeerr = safe_fopen (errfile, "w+")) == NULL)
   {
     mutt_perror (errfile);
-    fclose (smimeout); smimeout = NULL;
+    safe_fclose (&smimeout); smimeout = NULL;
     return NULL;
   }
   mutt_unlink (errfile);
@@ -1702,8 +1702,8 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
   if ((tmpfp = safe_fopen (tmpfname, "w+")) == NULL)
   {
     mutt_perror (tmpfname);
-    fclose (smimeout); smimeout = NULL;
-    fclose (smimeerr); smimeerr = NULL;
+    safe_fclose (&smimeout); smimeout = NULL;
+    safe_fclose (&smimeerr); smimeerr = NULL;
     return NULL;
   }
 
@@ -1713,13 +1713,13 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
   mutt_copy_bytes (s->fpin, tmpfp,  m->length);
 
   fflush (tmpfp);
-  fclose (tmpfp);
+  safe_fclose (&tmpfp);
 
   if ((type & ENCRYPT) &&
       (thepid = smime_invoke_decrypt (&smimein, NULL, NULL, -1,
                                      fileno (smimeout),  fileno (smimeerr), tmpfname)) == -1)
   {
-    fclose (smimeout); smimeout = NULL;
+    safe_fclose (&smimeout); smimeout = NULL;
     mutt_unlink (tmpfname);
     if (s->flags & M_DISPLAY)
       state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
@@ -1730,7 +1730,7 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
                                          fileno (smimeout), fileno (smimeerr), NULL,
                                          tmpfname, SIGNOPAQUE)) == -1)
   {
-    fclose (smimeout); smimeout = NULL;
+    safe_fclose (&smimeout); smimeout = NULL;
     mutt_unlink (tmpfname);
     if (s->flags & M_DISPLAY)
       state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
@@ -1746,7 +1746,7 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
     fputc ('\n', smimein);
   }
 
-  fclose (smimein);
+  safe_fclose (&smimein);
        
   mutt_wait_filter (thepid);
   mutt_unlink (tmpfname);
@@ -1785,7 +1785,7 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
       if ((fpout = safe_fopen (tmptmpfname, "w+")) == NULL)
       {
        mutt_perror(tmptmpfname);
-       fclose (smimeout); smimeout = NULL;
+       safe_fclose (&smimeout); smimeout = NULL;
        return NULL;
       }
     }
@@ -1819,13 +1819,13 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
       }
       
     }
-    fclose (smimeout);
+    safe_fclose (&smimeout);
     smimeout = NULL;
     mutt_unlink (outfile);
 
     if (!outFile)
     {
-      fclose (fpout);
+      safe_fclose (&fpout);
       mutt_unlink (tmptmpfname);
     }
     fpout = NULL;
@@ -1857,7 +1857,7 @@ static BODY *smime_handle_entity (BODY *m, STATE *s, FILE *outFile)
     m->goodsig = p->goodsig;
     m->badsig  = p->badsig;
   }
-  fclose (smimeerr);
+  safe_fclose (&smimeerr);
 
   return (p);
 }
diff --git a/smtp.c b/smtp.c
index a49d25cb9f2d728031ec9aa504b8fd75f1e0d391..e6c82f906f589bd096b028ac85283b512f441fb7 100644 (file)
--- a/smtp.c
+++ b/smtp.c
@@ -164,12 +164,12 @@ smtp_data (CONNECTION * conn, const char *msgfile)
   snprintf (buf, sizeof (buf), "DATA\r\n");
   if (mutt_socket_write (conn, buf) == -1)
   {
-    fclose (fp);
+    safe_fclose (&fp);
     return smtp_err_write;
   }
   if ((r = smtp_get_resp (conn)))
   {
-    fclose (fp);
+    safe_fclose (&fp);
     return r;
   }
 
@@ -183,19 +183,19 @@ smtp_data (CONNECTION * conn, const char *msgfile)
     {
       if (mutt_socket_write_d (conn, ".", -1, M_SOCK_LOG_FULL) == -1)
       {
-        fclose (fp);
+        safe_fclose (&fp);
         return smtp_err_write;
       }
     }
     if (mutt_socket_write_d (conn, buf, -1, M_SOCK_LOG_FULL) == -1)
     {
-      fclose (fp);
+      safe_fclose (&fp);
       return smtp_err_write;
     }
 
     mutt_progress_update (&progress, ftell (fp), -1);
   }
-  fclose (fp);
+  safe_fclose (&fp);
 
   /* terminate the message body */
   if (mutt_socket_write (conn, ".\r\n") == -1)