diff options
| author | Sam Varshavchik | 2022-01-15 23:14:47 -0500 |
|---|---|---|
| committer | Sam Varshavchik | 2022-01-15 23:44:03 -0500 |
| commit | 9457c2f56c7c8402d83153965a0951dafc2a4d18 (patch) | |
| tree | 43f8c38a863929a560f549b8b7ca57733899cce6 | |
| parent | 6d54a8a93311b6bb0eedae79cf4bde01d0955708 (diff) | |
| download | courier-libs-9457c2f56c7c8402d83153965a0951dafc2a4d18.tar.bz2 | |
Fix minor memory leaks
| -rw-r--r-- | imap/Makefile.am | 13 | ||||
| -rw-r--r-- | imap/imapd.c | 4 | ||||
| -rw-r--r-- | imap/mailboxlist.c | 5 | ||||
| -rw-r--r-- | imap/smaptestsuite | 45 | ||||
| -rw-r--r-- | imap/storeinfo.c | 15 | ||||
| -rwxr-xr-x | imap/testsuite | 70 | ||||
| -rw-r--r-- | imap/testsuitevalgrind | 5 | ||||
| -rw-r--r-- | maildir/maildirquota.c | 2 |
8 files changed, 101 insertions, 58 deletions
diff --git a/imap/Makefile.am b/imap/Makefile.am index a363bc1..5d6b90d 100644 --- a/imap/Makefile.am +++ b/imap/Makefile.am @@ -13,6 +13,7 @@ CLEANFILES=imapd.8 imapd.html mkimapdcert.html mkimapdcert.8 \ courierpop3d.html courierpop3d.8 mkpop3dcert.html mkpop3dcert.8 EXTRA_DIST=testsuite testsuite.txt smaptestsuite smaptestsuite.txt \ + testsuitevalgrind \ BUGS BUGS.html README README.html imapd.authpam \ pop3d.authpam system-auth.authpam system-auth2.authpam\ makeimapaccess.8.in makeimapaccess.html.in \ @@ -212,6 +213,18 @@ check-am: @chmod +x testsuitefix.pl LC_ALL=C; export LC_ALL; $(srcdir)/testsuite | ./testsuitefix.pl | sort | cmp -s - $(srcdir)/testsuite.txt LC_ALL=C; export LC_ALL; test "@smap@" = "yes" || exit 0; @SHELL@ $(srcdir)/smaptestsuite | ./testsuitefix.pl | sort | cmp -s - $(srcdir)/smaptestsuite.txt + VALGRIND="`which valgrind`"; test "$$VALGRIND" != "" || exit 0; \ + LC_ALL=C; export LC_ALL; \ + rm -f confmdtesterror; \ + IMAPINVOKE='@SHELL@ $(srcdir)/testsuitevalgrind ./imapd'; export IMAPINVOKE; \ + @SHELL@ -x $(srcdir)/testsuite 2>&1 | tee confmderror.txt; test -f confmdtesterror || exit 0; exit 1 + VALGRIND="`which valgrind`"; test "$$VALGRIND" != "" || exit 0; \ + LC_ALL=C; export LC_ALL; \ + rm -f confmdtesterror; \ + IMAPINVOKE='@SHELL@ $(srcdir)/testsuitevalgrind ./imapd'; export IMAPINVOKE; \ + @SHELL@ -x $(srcdir)/smaptestsuite 2>&1 | tee confmderror.txt; test -f confmdtesterror || exit 0; exit 1 + + rm -f confmdtesterror confmderror.txt rm -rf confmdtest testsuite-imap: diff --git a/imap/imapd.c b/imap/imapd.c index 55e17ab..c0a4aa9 100644 --- a/imap/imapd.c +++ b/imap/imapd.c @@ -3850,7 +3850,10 @@ int do_folder_delete(char *mailbox_name) } if (acl_read_folder(&l, mi.homedir, mi.maildir) < 0) + { + maildir_info_destroy(&mi); return -1; + } if (strcasecmp(mi.maildir, INBOX)) { @@ -3875,6 +3878,7 @@ int do_folder_delete(char *mailbox_name) free(p); } maildir_aclt_list_destroy(&l); + maildir_info_destroy(&mi); return -1; } diff --git a/imap/mailboxlist.c b/imap/mailboxlist.c index 41c873e..ce6cf55 100644 --- a/imap/mailboxlist.c +++ b/imap/mailboxlist.c @@ -96,7 +96,8 @@ const char *maildir_shared_index_file() if (p && *p) { - const char *q=auth_getoptionenv("sharedgroup"); + char *opt=auth_getoptionenv("sharedgroup"); + const char *q=opt; if (!q) q=""; @@ -106,6 +107,8 @@ const char *maildir_shared_index_file() write_error_exit(0); strcat(strcpy(filenamep, p), q); + if (opt) + free(opt); } } diff --git a/imap/smaptestsuite b/imap/smaptestsuite index 77e012a..4962027 100644 --- a/imap/smaptestsuite +++ b/imap/smaptestsuite @@ -1,3 +1,8 @@ +if test "$IMAPINVOKE" = "" +then + IMAPINVOKE="./imapd" +fi + SED='s/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g;s/SNAPSHOT "[^"]*"/SNAPSHOT -SNAPSHOT-/g;s/SNAPSHOTEXISTS "[^"]*"/SNAPSHOTEXISTS -SNAPSHOT-/g;s:^-ERR .*:-ERR --error--:' rm -rf confmdtest @@ -13,7 +18,7 @@ EOF i=`expr $i + 1` done -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" OPEN INBOX STORE 1-10 20-80 90-130 +FLAGS=DELETED EXPUNGE @@ -33,7 +38,7 @@ EOF i=`expr $i + 1` done -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" OPEN INBOX EXPUNGE 1-10 20-80 90-130 LOGOUT @@ -76,7 +81,7 @@ Attached message --aaa-- EOF -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" OPEN INBOX FETCH 1 CONTENTS.PEEK=MIME(Mime-Version,Content-Type,Content-Disposition) FETCH 1 CONTENTS=MIME(Mime-Version,Content-Type,Content-Disposition) @@ -172,7 +177,7 @@ IG1zZ2VudmVsb3BlLmMK --zzz-- EOF -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" open INBOX FETCH 1 CONTENTS=BODY[1.1] FETCH 1 CONTENTS=BODY.DECODED[1.1] @@ -210,7 +215,7 @@ LOGOUT EOF rm -f confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" open INBOX COPY 1-10 "" INBOX NOOP @@ -242,9 +247,9 @@ do n=`expr $n + 1` done echo "LOGOUT" -) | env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd | sed "$SED" +) | env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE | sed "$SED" -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" open INBOX SEARCH UNMARKED NOT DELETED SEARCH MARKED NOT DELETED @@ -304,7 +309,7 @@ Content-Type: text/plain Test EOF -env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" open INBOX COPY 1 "" INBOX NOOP @@ -316,13 +321,13 @@ MOVE 2 "" INBOX a LOGOUT EOF cat confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" open INBOX a LOGOUT EOF cat confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" sopen "" INBOX a NOOP NOOP @@ -343,7 +348,7 @@ LOGOUT EOF echo `ls confmdtest/.a/courierimapsnapshots | wc -l` -env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" delete INBOX a sopen "" INBOX NOOP @@ -383,7 +388,7 @@ EOF echo `ls confmdtest/courierimapsnapshots | wc -l` touch -t 199901010000 `ls confmdtest/courierimapsnapshots/* | sed -n 1p` -env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" sopen "" INBOX CLOSE LOGOUT @@ -413,7 +418,7 @@ Mary had a little lamb, its fleece was white as snow. test message EOF -env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" open INBOX FETCH 1 CONTENTS=HEADERS FETCH 1 CONTENTS=RAWHEADERS @@ -428,7 +433,7 @@ FETCH 1 CONTENTS=MIME(:MIME) LOGOUT EOF -env IMAP_KEYWORDS=1 IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF >testsuite.tmp +env IMAP_KEYWORDS=1 IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF >testsuite.tmp open INBOX CREATE INBOX a COPY 1 "" INBOX a @@ -462,7 +467,7 @@ SNAPSHOT=`fgrep '* SNAPSHOT ' testsuite.tmp | cut -c12-` sed "$SED" <testsuite.tmp rm -f testsuite.tmp -env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" SOPEN $SNAPSHOT INBOX a COPY 1 "" INBOX a NOOP @@ -478,20 +483,20 @@ SEARCH UNMARKED NOT KEYWORD -Label3 LOGOUT EOF -env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" OPEN INBOX STORE 1 KEYWORDS=Junk*Junk LOGOUT EOF -env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/' +env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/' a1 SELECT INBOX a2 FETCH 1 FLAGS a3 STORE 1 FLAGS (\Seen Abra,Cadabra) a3 LOGOUT EOF -env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" OPEN INBOX FETCH 1 FLAGS KEYWORDS COPY 1 "" INBOX @@ -523,7 +528,7 @@ echo "confmdtest3 1 1 `pwd` confmdtest3" >confmdtest4/indexb || exit 1 IMAP_SHAREDINDEXFILE=`pwd`/confmdtest4/index export IMAP_SHAREDINDEXFILE -env AUTHENTICATED=confmdtest IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env AUTHENTICATED=confmdtest IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" LIST public LIST public a LIST public b @@ -656,7 +661,7 @@ test message EOF n=`expr $n + 1` done -env AUTHENTICATED=confmdtest IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 ./imapd <<EOF | sed "$SED" +env AUTHENTICATED=confmdtest IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED" OPEN INBOX EXPUNGE LOGOUT diff --git a/imap/storeinfo.c b/imap/storeinfo.c index de885e9..cc31c31 100644 --- a/imap/storeinfo.c +++ b/imap/storeinfo.c @@ -221,6 +221,7 @@ int kwAllowed=1; else { struct libmail_kwMessage *kw; + struct libmail_kwMessage *si_kw; new_flags=si->flags; @@ -229,12 +230,16 @@ int kwAllowed=1; if (kw && kw->firstEntry == NULL) kw=NULL; - if (si->keywords && si->keywords->firstEntry == NULL) - si->keywords=NULL; + si_kw=si->keywords; + + if (si_kw && si_kw->firstEntry == NULL) + { + si_kw=NULL; + } - if ((si->keywords && !kw) || - (!si->keywords && kw) || - (si->keywords && kw && libmail_kwmCmp(si->keywords, kw))) + if ((si_kw && !kw) || + (!si_kw && kw) || + (si_kw && kw && libmail_kwmCmp(si_kw, kw))) { if (kwAllowed) { diff --git a/imap/testsuite b/imap/testsuite index 1283f28..37a264b 100755 --- a/imap/testsuite +++ b/imap/testsuite @@ -17,6 +17,11 @@ test ! -d confmdtest2 || chmod -R u+rwx confmdtest2 rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 +if test "$IMAPINVOKE" = "" +then + IMAPINVOKE="./imapd" +fi + cat >confmdtest/cur/msg1:2,S <<EOF || exit 1 From: John <john@example.com> To: Steve <steve@example.com>, Tom <tom@example.com> @@ -116,7 +121,7 @@ else initinbox="inbox.$initinbox" fi -env IMAP_BROKENUIDV=1 MAILDIR=$initdir ./imapd >confmdtest.stdout <<EOF +env IMAP_BROKENUIDV=1 MAILDIR=$initdir $IMAPINVOKE >confmdtest.stdout <<EOF a001 select $initinbox a logout EOF @@ -125,7 +130,7 @@ EOF inituid -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' a001 select inbox a002 fetch 1 (bodystructure) a003 fetch 1 (body[]) @@ -222,7 +227,7 @@ touch -t 199901010000 confmdtest/new/msg3 inituid -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' b000 status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN) b001 select inbox b001a status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN) @@ -266,7 +271,8 @@ b030 select inbox b031 fetch 2 (bodystructure) adone logout EOF -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' + +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' foo select inbox.bozo foo store 1 +flags \Deleted foo expunge @@ -278,7 +284,7 @@ mkdir confmdtest/tmp || exit 1 mkdir confmdtest/cur || exit 1 mkdir confmdtest/new || exit 1 echo "10000S,2C" >confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' c001 select inbox c002 append inbox {5} test @@ -308,7 +314,7 @@ mkdir confmdtest/tmp || exit 1 mkdir confmdtest/cur || exit 1 mkdir confmdtest/new || exit 1 echo "10000S,5C" >confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' d001 select inbox d002 append inbox {5} test @@ -319,7 +325,7 @@ d005 noop ddone logout EOF cat confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' e001 select inbox e002 copy 1:2 inbox e003 noop @@ -328,7 +334,7 @@ EOF cat confmdtest/maildirsize ../maildir/maildirmake -f Trash confmdtest || exit 1 -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' f001 select inbox f002 copy 1:2 inbox f002 copy 1:2 inbox.Trash @@ -343,7 +349,7 @@ fdone logout EOF cat confmdtest/maildirsize echo "Counts:" `ls confmdtest/cur | wc -l` `ls confmdtest/.Trash/cur | wc -l` -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' g001 select inbox g002 select Trash g003 select INBOX.Trash @@ -367,7 +373,7 @@ chmod u-rwx confmdtest2/.b/cur echo "test `pwd`/confmdtest2" >confmdtest/shared-maildirs -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' h001 list "" "*" h002 list "" "%" h003 list "" "%.%" @@ -422,19 +428,19 @@ EOF ../maildir/maildirmake -f c confmdtest ../maildir/maildirmake -f Trash confmdtest2 -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' ii001 list "" "*" ii002 list "" "*" iidone logout EOF -env IMAP_BROKENUIDV=1 IMAP_CHECK_ALL_FOLDERS=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 IMAP_CHECK_ALL_FOLDERS=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' ii003 list "" "*" ii004 list "" "*" iidone logout EOF -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' i001 select shared.test.b i002 select shared.test.a i003 close @@ -518,7 +524,7 @@ EOF inituid -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' T001 select INBOX T002 fetch 1:* (uid body[header.fields(date)]) T003 THREAD ORDEREDSUBJECT US-ASCII ALL @@ -539,7 +545,7 @@ EOF rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 ../maildir/maildirmake -f Trash confmdtest || exit 1 -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' J001 list "" "*" J002 lsub "" "*" J003 SUBSCRIBE INBOX @@ -624,7 +630,7 @@ EOF inituid -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' K001 select INBOX K002 THREAD REFERENCES US-ASCII ALL KDONE logout @@ -634,7 +640,7 @@ rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 ../maildir/maildirmake -f Trash confmdtest || exit 1 -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' L001 CREATE INBOX.a L002 CREATE INBOX.a.a L003 CREATE INBOX.aa @@ -676,7 +682,7 @@ rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 ../maildir/maildirmake -q 10C confmdtest || exit 1 -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' M001 CREATE INBOX.a M002 APPEND INBOX \Seen {5} test @@ -690,7 +696,7 @@ M008 RENAME INBOX.a INBOX.b MDONE logout EOF cat confmdtest/maildirsize -env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' M009 DELETE INBOX.b MDONE logout EOF @@ -699,7 +705,7 @@ cat confmdtest/maildirsize rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 -env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' N001 LIST "" "*" N002 append inbox \Deleted {11} test @@ -716,7 +722,7 @@ EOF rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 ../maildir/maildirmake -q10C confmdtest -env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' O001 append inbox NIL {11} test @@ -733,7 +739,7 @@ EOF cat confmdtest/maildirsize rm -f confmdtest/maildirsize -env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' p001 SELECT INBOX p002 CREATE INBOX.a p003 COPY 1 INBOX.a @@ -769,7 +775,7 @@ P026 SEARCH KEYWORD -Label2 KEYWORD -Label1 pDONE LOGOUT EOF -env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' Q001 select INBOX Q002 fetch 1:* FLAGS Q003 status INBOX.Trash MESSAGES @@ -786,7 +792,7 @@ EOF rm -rf confmdtest ../maildir/maildirmake confmdtest || exit 1 -env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' R001 CREATE INBOX.a R002 LIST (ACL MYRIGHTS POSTADDRESS) "" "*" R003 ACL STORE INBOX owner -t @@ -893,7 +899,7 @@ Subject: test test EOF -env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' S001 SELECT INBOX.a S002 COPY 1 INBOX.a S003 NOOP @@ -967,7 +973,7 @@ echo "user2 1 1 `pwd` confmdtest3" >confmdtest4/indexb || exit 1 IMAP_SHAREDINDEXFILE=`pwd`/confmdtest4/index export IMAP_SHAREDINDEXFILE -env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' T001 ACL STORE INBOX user=user0 +l T002 CREATE INBOX.a T003 ACL STORE INBOX.a anyone +lr @@ -979,7 +985,7 @@ user1 T005 LOGOUT EOF -env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' T010 ACL STORE INBOX anyone +l T011 CREATE INBOX.a T012 append INBOX.a \Seen {22} @@ -990,14 +996,14 @@ user2 T013 LOGOUT EOF -env AUTHENTICATED=user0 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env AUTHENTICATED=user0 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' T020 list(acl) "" "#shared.*" T021 ACL STORE INBOX anyone acdilrsw T022 list(acl) "" "#shared.%" T023 LOGOUT EOF -env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' T030 LIST "" "#shared.*" T031 LIST "" "#shared.%" T032 LIST "" "#shared.a.%" @@ -1032,7 +1038,7 @@ user.2 1 1 `pwd` confmdtest3 usér/3 1 1 `pwd` confmdtest3 EOF -env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' a ENABLE UTF8=ACCEPT T055 LIST "" "#shared.b.*" T056 LIST "" "#shared.b.%" @@ -1041,7 +1047,7 @@ T058 LIST "" "#shared.b.use&-2.*" TDONE LOGOUT EOF -env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' a ENABLE UTF8=ACCEPT T055 LIST "" "#shared.b.*" T056 LIST "" "#shared.b.%" @@ -1065,7 +1071,7 @@ EOF echo "usergroup1 1 1 `pwd` confmdtest" >confmdtest4/indexgroup1 || exit 1 -env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 OPTIONS=sharedgroup=group1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' +env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 OPTIONS=sharedgroup=group1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g' T072 LIST "" #shared.* T073 LIST(ACL) "" INBOX T074 ACL STORE INBOX user=fred lr diff --git a/imap/testsuitevalgrind b/imap/testsuitevalgrind new file mode 100644 index 0000000..e39c463 --- /dev/null +++ b/imap/testsuitevalgrind @@ -0,0 +1,5 @@ +#! /bin/bash + +valgrind --tool=memcheck --leak-check=yes --error-exitcode=1 "$@" && exit 0 +>confmdtesterror +exit 0 diff --git a/maildir/maildirquota.c b/maildir/maildirquota.c index 70f05a7..1f9c428 100644 --- a/maildir/maildirquota.c +++ b/maildir/maildirquota.c @@ -500,10 +500,12 @@ static int docheckquota(struct maildirsize *info, if (rename(newmaildirsizename, info->maildirsizefile)) { unlink(newmaildirsizename); + free(newmaildirsizename); close(maildirsize_fd); errno=EIO; return (-1); } + free(newmaildirsizename); info->recalculation_needed=0; info->size.nbytes=maildirsize_size; |
