From: Timo Sirainen Date: Thu, 14 Jan 2016 16:52:01 +0000 (+0200) Subject: imapc: Fixed mailbox name escaping for CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE X-Git-Tag: 2.2.22.rc1~359 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e2bb07ff164bbac054cc53a4b4ca0d8aee909d1;p=thirdparty%2Fdovecot%2Fcore.git imapc: Fixed mailbox name escaping for CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE --- diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index 349b7111e9..9e38b5c940 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -810,7 +810,8 @@ static int imapc_list_set_subscribed(struct mailbox_list *_list, struct imapc_simple_context ctx; cmd = imapc_list_simple_context_init(&ctx, list); - imapc_command_sendf(cmd, set ? "SUBSCRIBE %s" : "UNSUBSCRIBE %s", name); + imapc_command_sendf(cmd, set ? "SUBSCRIBE %s" : "UNSUBSCRIBE %s", + imapc_list_to_remote(list, name)); imapc_simple_run(&ctx); return ctx.ret; } @@ -839,7 +840,7 @@ imapc_list_delete_mailbox(struct mailbox_list *_list, const char *name) } cmd = imapc_list_simple_context_init(&ctx, list); - imapc_command_sendf(cmd, "DELETE %s", name); + imapc_command_sendf(cmd, "DELETE %s", imapc_list_to_remote(list, name)); imapc_simple_run(&ctx); if (fs_list != NULL && ctx.ret == 0) { @@ -886,7 +887,9 @@ imapc_list_rename_mailbox(struct mailbox_list *oldlist, const char *oldname, } cmd = imapc_list_simple_context_init(&ctx, list); - imapc_command_sendf(cmd, "RENAME %s %s", oldname, newname); + imapc_command_sendf(cmd, "RENAME %s %s", + imapc_list_to_remote(list, oldname), + imapc_list_to_remote(list, newname)); imapc_simple_run(&ctx); if (ctx.ret == 0 && fs_list != NULL && oldlist == newlist) { oldname = imapc_list_get_fs_name(list, oldname); diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 00ccb40478..d512b58f30 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -642,11 +642,17 @@ imapc_mailbox_create(struct mailbox *box, struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; struct imapc_command *cmd; struct imapc_simple_context sctx; - const char *name = box->name; + const char *name = imapc_mailbox_get_remote_name(mbox); - if (directory) { + if (!directory) + ; + else if (strcmp(box->list->name, MAILBOX_LIST_NAME_IMAPC) == 0) { + struct imapc_mailbox_list *imapc_list = + (struct imapc_mailbox_list *)box->list; + name = t_strdup_printf("%s%c", name, imapc_list->root_sep); + } else { name = t_strdup_printf("%s%c", name, - mailbox_list_get_hierarchy_sep(box->list)); + mailbox_list_get_hierarchy_sep(box->list)); } imapc_simple_context_init(&sctx, mbox->storage->client); cmd = imapc_client_cmd(mbox->storage->client->client,