diff options
| -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; | 
