]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Fixed mailbox name escaping for CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 14 Jan 2016 16:52:01 +0000 (18:52 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 14 Jan 2016 16:52:01 +0000 (18:52 +0200)
src/lib-storage/index/imapc/imapc-list.c
src/lib-storage/index/imapc/imapc-storage.c

index 349b7111e9963beb7e8e21bbf9fe2c88775ee146..9e38b5c940f51e475c2dd82655a9d9fa80aa1737 100644 (file)
@@ -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);
index 00ccb4047843b53900668677457103fe1cb84959..d512b58f30570356eb438d3996f21668bb1b4405 100644 (file)
@@ -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,