Mercurial > dovecot > core-2.2
changeset 9505:caf4e126670c HEAD
imap-acl: Handle empty rights (no rights) properly.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 22 Jun 2009 00:29:13 -0400 |
parents | e8b202fe3ef8 |
children | 0cc9e2028580 |
files | src/plugins/imap-acl/imap-acl-plugin.c |
diffstat | 1 files changed, 4 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/imap-acl/imap-acl-plugin.c Mon Jun 22 00:28:33 2009 -0400 +++ b/src/plugins/imap-acl/imap-acl-plugin.c Mon Jun 22 00:29:13 2009 -0400 @@ -103,7 +103,7 @@ imap_acl_write_rights_list(string_t *dest, const char *const *rights) { const struct imap_acl_letter_map *map; - unsigned int i; + unsigned int i, orig_len = str_len(dest); bool append_c = FALSE, append_d = FALSE; for (i = 0; rights[i] != NULL; i++) { @@ -121,6 +121,8 @@ str_append_c(dest, 'c'); if (append_d) str_append_c(dest, 'd'); + if (orig_len == str_len(dest)) + str_append(dest, "\"\""); } static void @@ -547,19 +549,7 @@ return TRUE; } - if (r->rights[0] == NULL) { - if (negative) { - update.modify_mode = 0; - update.rights.rights = NULL; - update.neg_modify_mode = ACL_MODIFY_MODE_CLEAR; - update.rights.neg_rights = NULL; - } else { - update.modify_mode = ACL_MODIFY_MODE_CLEAR; - update.rights.rights = NULL; - update.neg_modify_mode = 0; - update.rights.neg_rights = NULL; - } - } else if (negative) { + if (negative) { update.neg_modify_mode = update.modify_mode; update.modify_mode = ACL_MODIFY_MODE_REMOVE; update.rights.neg_rights = update.rights.rights;