changeset 9153:f2426d980426 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 ef644130d6c2
children 8206c38856ff
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
@@ -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;