commit 1bc9c6d9cf10dca14f1c9162ee246bc92bc86132
parent 40f2812a41cb40edff76a497dda89e095f0792f5
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date: Thu, 2 Jun 2011 19:21:19 +0200
reject qualified mailboxes with the magic name INBOX
otherwise we couldn't tell them apart from the real INBOX after
stripping away the Path.
Diffstat:
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/drv_imap.c b/src/drv_imap.c
@@ -797,6 +797,10 @@ parse_list_rsp( imap_store_t *ctx, char *cmd )
if (memcmp( arg, ctx->gen.conf->path, l ))
return;
arg += l;
+ if (l && !strcmp( arg, "INBOX" )) {
+ warn( "IMAP warning: ignoring INBOX in %s\n", ctx->gen.conf->path );
+ return;
+ }
if (!memcmp( arg + strlen( arg ) - 5, ".lock", 5 )) /* workaround broken servers */
return;
add_string_list( &ctx->gen.boxes, arg );
diff --git a/src/drv_maildir.c b/src/drv_maildir.c
@@ -180,7 +180,7 @@ maildir_list( store_t *gctx,
}
while ((de = readdir( dir ))) {
const char *inbox = ((maildir_store_conf_t *)gctx->conf)->inbox;
- int bl;
+ int bl, isibx;
struct stat st;
char buf[PATH_MAX];
@@ -189,8 +189,12 @@ maildir_list( store_t *gctx,
bl = nfsnprintf( buf, sizeof(buf), "%s%s/cur", gctx->conf->path, de->d_name );
if (stat( buf, &st ) || !S_ISDIR(st.st_mode))
continue;
- add_string_list( &gctx->boxes,
- !memcmp( buf, inbox, bl - 4 ) && !inbox[bl - 4] ? "INBOX" : de->d_name );
+ isibx = !memcmp( buf, inbox, bl - 4 ) && !inbox[bl - 4];
+ if (!isibx && !strcmp( de->d_name, "INBOX" )) {
+ warn( "Maildir warning: ignoring INBOX in %s\n", gctx->conf->path );
+ continue;
+ }
+ add_string_list( &gctx->boxes, isibx ? "INBOX" : de->d_name );
}
closedir (dir);