]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mailbox_list_default_get_vname() - Fix escaping namespace separator...
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 14 Jan 2021 15:07:34 +0000 (17:07 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 3 Feb 2021 09:04:22 +0000 (09:04 +0000)
For example if { storage_name="foo/bar", storage_sep=".", ns_sep="/" }
the "/" in the name shouldn't be treated as a namespace separator.
If vname_escape_char is set, it should be returned escaped instead.

src/lib-storage/mailbox-list.c
src/lib-storage/test-mailbox-list.c

index daedbb66ac6089998fbd46e345d4822815e911b0..dc28970443bc823bdafca58a28370901bc98d6ae 100644 (file)
@@ -730,6 +730,7 @@ mailbox_list_default_get_vname_part(struct mailbox_list *list,
        const char *vname = storage_name_part;
        char escape_chars[] = {
                list->set.vname_escape_char,
+               mail_namespace_get_sep(list->ns),
                '\0'
        };
 
index bd5d61cf61fcea59d8d676de1691691756a2948b..8ccce99461e8bbf2263a1e9402808a7cf957e770 100644 (file)
@@ -361,23 +361,19 @@ static void test_mailbox_list_get_names(void)
                /* vname escaping: */
                { .vname = "%7c|child",
                  .storage_name = "|.child",
-                 .flags = TEST_FLAG_NO_VNAME,
                  .ns_sep = '|', .list_sep = '.',
                  .vname_escape_char = '%' },
                { .vname = "%7c|child.",
                  .storage_name = "|.child+2e",
-                 .flags = TEST_FLAG_NO_VNAME,
                  .ns_sep = '|', .list_sep = '.',
                  .storage_name_escape_char = '+',
                  .vname_escape_char = '%' },
                { .vname = "%2f/child",
                  .storage_name = "/.child",
-                 .flags = TEST_FLAG_NO_VNAME,
                  .ns_sep = '/', .list_sep = '.',
                  .vname_escape_char = '%' },
                { .vname = "%2f/child.",
                  .storage_name = "/.child+2e",
-                 .flags = TEST_FLAG_NO_VNAME,
                  .ns_sep = '/', .list_sep = '.',
                  .storage_name_escape_char = '+',
                  .vname_escape_char = '%' },