Mercurial > dovecot > core-2.2
changeset 12982:c22e5e7c0dcd
lib-storage: Treat "namespace prefix/" as invalid mailbox name.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 03 Jun 2011 16:27:41 +0300 |
parents | 189c9baf840a |
children | c0b40ebc527d |
files | src/lib-storage/mail-storage.c |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-storage.c Mon May 23 16:12:44 2011 +0300 +++ b/src/lib-storage/mail-storage.c Fri Jun 03 16:27:41 2011 +0300 @@ -645,19 +645,27 @@ list_sep = mailbox_list_get_hierarchy_sep(box->list); ns_sep = mail_namespace_get_sep(ns); - if (ns_sep == list_sep || box->list->set.escape_char != '\0') - return 0; - if (ns->prefix_len > 0) { - /* vname is prefix with or without separator */ + /* vname is either "namespace/box" or "namespace" */ i_assert(strncmp(vname, ns->prefix, ns->prefix_len-1) == 0); vname += ns->prefix_len - 1; if (vname[0] != '\0') { i_assert(vname[0] == ns->prefix[ns->prefix_len-1]); vname++; + + if (vname[0] == '\0') { + /* "namespace/" isn't a valid mailbox name. */ + mail_storage_set_error(box->storage, + MAIL_ERROR_PARAMS, + "Invalid mailbox name"); + return -1; + } } } + if (ns_sep == list_sep || box->list->set.escape_char != '\0') + return 0; + for (p = vname; *p != '\0'; p++) { if (*p == list_sep) { mail_storage_set_error(box->storage, MAIL_ERROR_PARAMS,