summaryrefslogtreecommitdiffstats
path: root/imap
diff options
context:
space:
mode:
authorSam Varshavchik2022-02-22 20:10:38 -0500
committerSam Varshavchik2022-02-22 20:10:38 -0500
commit23ff373602a9d7df207c8df8bbce60d2a409a908 (patch)
tree8279cdd08eb216294753899a1e3d359137849630 /imap
parentd3c31390cd761b14947202422e9d8aadeea46d4c (diff)
downloadcourier-libs-23ff373602a9d7df207c8df8bbce60d2a409a908.tar.bz2
Fix response to a SELECT with insufficient ACLs.
Diffstat (limited to 'imap')
-rw-r--r--imap/imapd.c30
-rw-r--r--imap/testsuite.txt2
2 files changed, 16 insertions, 16 deletions
diff --git a/imap/imapd.c b/imap/imapd.c
index 0d5cbbb..71af3fe 100644
--- a/imap/imapd.c
+++ b/imap/imapd.c
@@ -5271,6 +5271,21 @@ int uid=0;
return (-1);
}
+ /* check if this is a shared read-only folder */
+
+ if (is_sharedsubdir(mailbox) &&
+ maildir_sharedisro(mailbox))
+ ro=1;
+
+ for (p=current_mailbox_acl; *p; p++)
+ if (strchr(ACL_INSERT ACL_EXPUNGE
+ ACL_SEEN ACL_WRITE ACL_DELETEMSGS,
+ *p))
+ break;
+
+ if (*p == 0)
+ ro=1;
+
if (imapscan_maildir(&current_maildir_info, mailbox, 0, ro,
NULL))
{
@@ -5281,12 +5296,6 @@ int uid=0;
}
current_mailbox=mailbox;
- /* check if this is a shared read-only folder */
-
- if (is_sharedsubdir(mailbox) &&
- maildir_sharedisro(mailbox))
- ro=1;
-
current_mailbox_ro=ro;
mailboxflags(ro);
@@ -5297,15 +5306,6 @@ int uid=0;
myrights();
writes(tag);
- for (p=current_mailbox_acl; *p; p++)
- if (strchr(ACL_INSERT ACL_EXPUNGE
- ACL_SEEN ACL_WRITE ACL_DELETEMSGS,
- *p))
- break;
-
- if (*p == 0)
- ro=1;
-
writes(ro ? " OK [READ-ONLY] Ok\r\n":" OK [READ-WRITE] Ok\r\n");
return (0);
}
diff --git a/imap/testsuite.txt b/imap/testsuite.txt
index 617a1a0..7de709f 100644
--- a/imap/testsuite.txt
+++ b/imap/testsuite.txt
@@ -1552,7 +1552,7 @@
001335 T033 OK LIST completed
001336 T034 NO Access denied for SELECT/EXAMINE on #shared.a.user1 (ACL "r" required)
001337 * FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
-001338 * OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited
+001338 * OK [PERMANENTFLAGS ()] No permanent flags permitted
001339 * 1 EXISTS
001340 * 0 RECENT
001341 * OK [UIDVALIDITY] Ok