reject qualified mailboxes with the magic name INBOX
otherwise we couldn't tell them apart from the real INBOX after stripping away the Path.
This commit is contained in:
parent
40f2812a41
commit
1bc9c6d9cf
|
@ -797,6 +797,10 @@ parse_list_rsp( imap_store_t *ctx, char *cmd )
|
||||||
if (memcmp( arg, ctx->gen.conf->path, l ))
|
if (memcmp( arg, ctx->gen.conf->path, l ))
|
||||||
return;
|
return;
|
||||||
arg += l;
|
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 */
|
if (!memcmp( arg + strlen( arg ) - 5, ".lock", 5 )) /* workaround broken servers */
|
||||||
return;
|
return;
|
||||||
add_string_list( &ctx->gen.boxes, arg );
|
add_string_list( &ctx->gen.boxes, arg );
|
||||||
|
|
|
@ -180,7 +180,7 @@ maildir_list( store_t *gctx,
|
||||||
}
|
}
|
||||||
while ((de = readdir( dir ))) {
|
while ((de = readdir( dir ))) {
|
||||||
const char *inbox = ((maildir_store_conf_t *)gctx->conf)->inbox;
|
const char *inbox = ((maildir_store_conf_t *)gctx->conf)->inbox;
|
||||||
int bl;
|
int bl, isibx;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char buf[PATH_MAX];
|
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 );
|
bl = nfsnprintf( buf, sizeof(buf), "%s%s/cur", gctx->conf->path, de->d_name );
|
||||||
if (stat( buf, &st ) || !S_ISDIR(st.st_mode))
|
if (stat( buf, &st ) || !S_ISDIR(st.st_mode))
|
||||||
continue;
|
continue;
|
||||||
add_string_list( &gctx->boxes,
|
isibx = !memcmp( buf, inbox, bl - 4 ) && !inbox[bl - 4];
|
||||||
!memcmp( buf, inbox, bl - 4 ) && !inbox[bl - 4] ? "INBOX" : de->d_name );
|
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);
|
closedir (dir);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user