]> granicus.if.org Git - neomutt/commitdiff
Fix duplicate mailbox detection for remote folders
authorRocco Rutte <pdmef@gmx.net>
Tue, 2 Jun 2009 15:24:06 +0000 (17:24 +0200)
committerRocco Rutte <pdmef@gmx.net>
Tue, 2 Jun 2009 15:24:06 +0000 (17:24 +0200)
ChangeLog
buffy.c

index cb6d4dde163dff4a835c62d9f981884a076a5010..ab8dc8c71fba0981c0c3fe26e38b8a7a6e1bb56c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2009-06-02 17:05 +0200  Rocco Rutte  <pdmef@gmx.net>  (9ca14dff45c5)
+
+       * smtp.c: Fix array size
+
+2009-06-02 15:43 +0200  Rocco Rutte  <pdmef@gmx.net>  (df4a17222b03)
+
+       * ChangeLog, buffy.c: Thoroughly check for duplicates when parsing
+       'mailboxes' command. Closes #1428.
+
 2009-06-01 14:50 +0200  Rocco Rutte  <pdmef@gmx.net>  (7a277ba306c9)
 
        * gnupgparse.c: Use mutt_atoi() when parsing GnuPG output. Closes
diff --git a/buffy.c b/buffy.c
index 3e9ec2631dfc019dcd1630548c5cb81e06267b36..40c229ec611e39817dac2b0eb5cac1a99a5a08ba 100644 (file)
--- a/buffy.c
+++ b/buffy.c
@@ -197,6 +197,7 @@ int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *e
   char buf[_POSIX_PATH_MAX];
   struct stat sb;
   char f1[PATH_MAX], f2[PATH_MAX];
+  char *p, *q;
 
   while (MoreArgs (s))
   {
@@ -219,15 +220,12 @@ int mutt_parse_mailboxes (BUFFER *path, BUFFER *s, unsigned long data, BUFFER *e
     /* Skip empty tokens. */
     if(!*buf) continue;
 
-    if (!realpath (buf, f1))
-      continue;
-
     /* avoid duplicates */
+    p = realpath (buf, f1);
     for (tmp = &Incoming; *tmp; tmp = &((*tmp)->next))
     {
-      if (!realpath ((*tmp)->path, f2))
-       continue;
-      if (mutt_strcmp (f1, f2) == 0)
+      q = realpath ((*tmp)->path, f2);
+      if (mutt_strcmp (p ? p : buf, q ? q : (*tmp)->path) == 0)
       {
        dprint(3,(debugfile,"mailbox '%s' already registered as '%s'\n", buf, (*tmp)->path));
        break;