summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--imap/imapd.c11
-rwxr-xr-ximap/testsuite13
-rw-r--r--imap/testsuite.txt11
3 files changed, 33 insertions, 2 deletions
diff --git a/imap/imapd.c b/imap/imapd.c
index ccc1991..0d5cbbb 100644
--- a/imap/imapd.c
+++ b/imap/imapd.c
@@ -4905,6 +4905,8 @@ int uid=0;
if ((did_exist=folder_exists(orig_mailbox)) != 0)
{
+ const char *p;
+
if (acl_read_folder(&l,
mi.homedir,
mi.maildir) < 0)
@@ -4917,8 +4919,13 @@ int uid=0;
maildir_info_destroy(&mi);
return (0);
}
- maildir_acl_delete(mi.homedir, mi.maildir);
- /* Clear out fluff */
+
+ p=strchr(mi.maildir, '.');
+ if (p)
+ {
+ maildir_acl_delete(mi.homedir, p);
+ /* Clear out fluff */
+ }
}
if (mdcreate(mailbox))
diff --git a/imap/testsuite b/imap/testsuite
index 8ad8140..b8fe504 100755
--- a/imap/testsuite
+++ b/imap/testsuite
@@ -1170,3 +1170,16 @@ EOF
env IMAP_EMPTYTRASH=Trash:2,Trash2:3 ./imapd.testmockpurge confmdtest <<EOF | grep maildir_purge
TRASH2 LOGOUT
EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+env IMAP_BROKENUIDV=1 AUTHENTICATED=user1 $IMAPINVOKE confmdtest <<EOF
+V001 ACL STORE INBOX user=user2 +w
+V002 CREATE INBOX.Folder.Subfolder
+V003 ACL STORE INBOX.Folder user=user2 +r
+V004 LIST (ACL) "" "INBOX.Folder"
+V005 CREATE INBOX.Folder
+V006 LIST (ACL) "" "INBOX.Folder"
+EOF
+ls confmdtest/courierimaphieracl 2>&1
+rm -rf confmdtest
diff --git a/imap/testsuite.txt b/imap/testsuite.txt
index b1f027b..73190ea 100644
--- a/imap/testsuite.txt
+++ b/imap/testsuite.txt
@@ -1776,3 +1776,14 @@
001482 maildir_purge: .Trash2 (259200)
001483 maildir_purge: .Trash (172800)
001484 maildir_purge: .Trash2 (259200)
+001485 * PREAUTH Ready.
+001486 * LIST (\Unmarked \HasNoChildren) "." "INBOX" (("ACL" (("owner" "acdilrsw")("administrators" "acdilrsw")("user=user2" "w"))))
+001486 V001 OK ACL STORE completed.
+001487 V002 OK "INBOX.Folder.Subfolder" created.
+001488 * LIST (\Noselect \HasChildren) "." "INBOX.Folder" (("ACL" (("owner" "acdilrsw")("administrators" "acdilrsw")("user=user2" "rw"))))
+001488 V003 OK ACL STORE completed.
+001489 * LIST (\Noselect \HasChildren) "." "INBOX.Folder" (("ACL" (("owner" "acdilrsw")("administrators" "acdilrsw")("user=user2" "rw"))))
+001489 V004 OK LIST completed
+001490 V005 OK "INBOX.Folder" created.
+001491 * LIST (\HasChildren) "." "INBOX.Folder" (("ACL" (("owner" "acdilrsw")("administrators" "acdilrsw")("user=user2" "rw"))))
+001491 V006 OK LIST completed