Browse Source

IMAP: reject unqualified non-uppercased INBOX spellings

otherwise the server would interpret it as INBOX contrary to our
expectations, which might lead to moderately surprising effects.

if you really want to sync your ~/maildir/inbox to the IMAP INBOX,
specify it as the Maildir Store's Inbox.
Oswald Buddenhagen 14 years ago
parent
commit
e9407cc1f7
1 changed files with 10 additions and 2 deletions
  1. 10 2
      src/drv_imap.c

+ 10 - 2
src/drv_imap.c

@@ -1350,9 +1350,17 @@ static int
 prepare_box( char **buf, const imap_store_t *ctx )
 {
 	const char *name = ctx->name;
+	const char *pfx = ctx->prefix;
 
-	return prepare_name( buf, ctx,
-	    (starts_with( name, -1, "INBOX", 5 ) && (!name[5] || name[5] == '/')) ? "" : ctx->prefix, name );
+	if (starts_with_upper( name, -1, "INBOX", 5 ) && (!name[5] || name[5] == '/')) {
+		if (!memcmp( name, "INBOX", 5 )) {
+			pfx = "";
+		} else if (!*pfx) {
+			error( "IMAP error: cannot use unqualified '%s'. Did you mean INBOX?", name );
+			return -1;
+		}
+	}
+	return prepare_name( buf, ctx, pfx, name );
 }
 
 static int