From 6adcea35e5f744ff8d56a234f094e65661987fad Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 14 Jan 2021 17:07:34 +0200 Subject: [PATCH] lib-storage: mailbox_list_default_get_vname() - Fix escaping namespace separator in storage_name 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 | 1 + src/lib-storage/test-mailbox-list.c | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index daedbb66ac..dc28970443 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -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' }; diff --git a/src/lib-storage/test-mailbox-list.c b/src/lib-storage/test-mailbox-list.c index bd5d61cf61..8ccce99461 100644 --- a/src/lib-storage/test-mailbox-list.c +++ b/src/lib-storage/test-mailbox-list.c @@ -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 = '%' }, -- 2.47.3