diff options
Diffstat (limited to 'maildir')
| -rw-r--r-- | maildir/Makefile.am | 2 | ||||
| -rw-r--r-- | maildir/maildiracl.c | 7 | ||||
| -rw-r--r-- | maildir/maildiraclt.c | 16 | ||||
| -rw-r--r-- | maildir/testsuite | 10 | ||||
| -rw-r--r-- | maildir/testsuite.txt | 10 |
5 files changed, 39 insertions, 6 deletions
diff --git a/maildir/Makefile.am b/maildir/Makefile.am index d619fb3..bd4dadc 100644 --- a/maildir/Makefile.am +++ b/maildir/Makefile.am @@ -144,7 +144,7 @@ clean-local: rm -rf testmd check-am: - unset VALGRIND; @SHELL@ $(srcdir)/testsuite 2>&1 | cmp - $(srcdir)/testsuite.txt + unset VALGRIND; @SHELL@ $(srcdir)/testsuite 2>&1 | diff -U 3 $(srcdir)/testsuite.txt - test "@PCRE_LDFLAGS@" != "" || exit 0 ; @SHELL@ $(srcdir)/testsuite2 2>&1 | cmp - $(srcdir)/testsuite2.txt LC_ALL=C; export LC_ALL; ./maildirkwtest | cmp -s - $(srcdir)/maildirkwtest.txt LC_ALL=C; export LC_ALL; ./maildiraclttest diff --git a/maildir/maildiracl.c b/maildir/maildiracl.c index 4726893..a8b6b16 100644 --- a/maildir/maildiracl.c +++ b/maildir/maildiracl.c @@ -194,6 +194,9 @@ int main(int argc, char *argv[]) else perror(maildir); exit(1); } + + maildir_aclt_list_destroy(&l); + maildir_aclt_destroy(&a); } if (strcmp(cmd, deletecmd) == 0) @@ -232,6 +235,8 @@ int main(int argc, char *argv[]) else perror(maildir); exit(1); } + + maildir_aclt_list_destroy(&l); } if (strcmp(cmd, computecmd) == 0) @@ -260,6 +265,8 @@ int main(int argc, char *argv[]) } printf("%s\n", maildir_aclt_ascstr(&a)); + + maildir_aclt_list_destroy(&l); } return (0); diff --git a/maildir/maildiraclt.c b/maildir/maildiraclt.c index d4b0966..f02443a 100644 --- a/maildir/maildiraclt.c +++ b/maildir/maildiraclt.c @@ -441,12 +441,14 @@ static int maildir_acl_read_check(maildir_aclt_list *aclt_list, } fp=fopen(strcat(strcpy(q, p), "/" ACLFILE), "r"); free(p); - free(q); if (fp == NULL) { + char *r; + if (strcmp(path, ".") == 0) { + free(q); /* INBOX ACL default */ if (maildir_aclt_list_add(aclt_list, "owner", @@ -458,17 +460,21 @@ static int maildir_acl_read_check(maildir_aclt_list *aclt_list, return 0; } - q=malloc(strlen(maildir)+sizeof("/" ACLHIERDIR "/") + + r=malloc(strlen(maildir)+sizeof("/" ACLHIERDIR "/") + strlen(path)); - if (!q) + if (!r) return -1; - strcat(strcat(strcpy(q, maildir), "/" ACLHIERDIR "/"), + strcat(strcat(strcpy(r, maildir), "/" ACLHIERDIR "/"), path+1); + rename(r, q); fp=fopen(q, "r"); - free(q); + if (!fp) + fp=fopen(r, "r"); + free(r); } + free(q); if (!fp && errno != ENOENT) return -1; diff --git a/maildir/testsuite b/maildir/testsuite index d6e5d91..71b9fe2 100644 --- a/maildir/testsuite +++ b/maildir/testsuite @@ -39,3 +39,13 @@ $VALGRIND ./maildirkw -r md one Label1 echo "" $VALGRIND ./maildirkw -L md | sort rm -rf md testmd + +maildirmake ./testmd + +$VALGRIND ./maildiracl -set testmd INBOX.Folder user1 rw +$VALGRIND ./maildiracl -list testmd INBOX.Folder | sort +$VALGRIND ./maildiracl -list testmd INBOX.Folder.Subfolder | sort +$VALGRIND ./maildirmake -f Folder testmd +$VALGRIND ./maildiracl -list testmd INBOX.Folder | sort +ls testmd/courierimaphieracl +rm -rf testmd diff --git a/maildir/testsuite.txt b/maildir/testsuite.txt index 9f70b7f..ed34d92 100644 --- a/maildir/testsuite.txt +++ b/maildir/testsuite.txt @@ -28,3 +28,13 @@ two Label1 Label2 one three Label3 Label4 two Label1 Label2 +administrators aceilrstwx +owner aceilrstwx +user1 rw +administrators aceilrstwx +owner aceilrstwx +user1 rw +administrators aceilrstwx +owner aceilrstwx +user1 rw +Folder.Subfolder |
