# HG changeset patch # User Timo Sirainen # Date 1245644953 14400 # Node ID f2426d9804268e2adf423d0830f5507a4149545c # Parent ef644130d6c257f26eee11a4c32b1e1cdec049cb imap-acl: Handle empty rights (no rights) properly. diff -r ef644130d6c2 -r f2426d980426 src/plugins/imap-acl/imap-acl-plugin.c --- 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 @@ -102,7 +102,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++) { @@ -120,6 +120,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 @@ -539,19 +541,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;