]> granicus.if.org Git - neomutt/commitdiff
Improve error handling in mbox magic detection.
authorKevin McCarthy <kevin@8t8.us>
Sun, 15 Jan 2017 18:00:55 +0000 (10:00 -0800)
committerRichard Russon <rich@flatcap.org>
Fri, 10 Feb 2017 03:32:55 +0000 (03:32 +0000)
Thanks to Simon Ruderich for pointing out several small issues with
the previous commit.

mx.c

diff --git a/mx.c b/mx.c
index fc877360f6b4bd39cc8f52802704f6428dea7b5d..3a3feaccda88f14ce03ebba68b0f957160d2f445 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -483,20 +483,27 @@ int mx_get_magic (const char *path)
   else if ((f = fopen (path, "r")) != NULL)
   {
     struct utimbuf times;
-    int ch = 0;
+    int ch;
 
     /* Some mailbox creation tools erroneously append a blank line to
      * a file before appending a mail message.  This allows mutt to
      * detect magic for and thus open those files. */
-    while ((ch = fgetc(f)) && (ch == '\n' || ch == '\r'));
-    if (!feof(f) && ch)
-      ungetc(ch, f);
-
-    fgets (tmp, sizeof (tmp), f);
-    if (mutt_strncmp ("From ", tmp, 5) == 0)
-      magic = MUTT_MBOX;
-    else if (mutt_strcmp (MMDF_SEP, tmp) == 0)
-      magic = MUTT_MMDF;
+    while ((ch = fgetc (f)) != EOF)
+    {
+      if (ch != '\n' && ch != '\r')
+      {
+        ungetc (ch, f);
+        break;
+      }
+    }
+
+    if (fgets (tmp, sizeof (tmp), f))
+    {
+      if (mutt_strncmp ("From ", tmp, 5) == 0)
+        magic = MUTT_MBOX;
+      else if (mutt_strcmp (MMDF_SEP, tmp) == 0)
+        magic = MUTT_MMDF;
+    }
     safe_fclose (&f);
 
     if (!option(OPTCHECKMBOXSIZE))