summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bdbobj/bdbobj2.c3
-rw-r--r--imap/ChangeLog4
-rw-r--r--imap/imapd.c23
-rwxr-xr-ximap/testsuite82
-rw-r--r--imap/testsuite.txt24
-rw-r--r--imap/testsuitefix.pl.in2
-rw-r--r--sqwebmail/ChangeLog4
7 files changed, 94 insertions, 48 deletions
diff --git a/bdbobj/bdbobj2.c b/bdbobj/bdbobj2.c
index d4311b7..f289b52 100644
--- a/bdbobj/bdbobj2.c
+++ b/bdbobj/bdbobj2.c
@@ -70,6 +70,9 @@ DBT key, value;
}
#endif
+ if (!key.data)
+ return 0;
+
*keylen=key.size;
*vallen=value.size;
if ((*val=(char *)malloc(*vallen + 1)) == 0) return (0);
diff --git a/imap/ChangeLog b/imap/ChangeLog
index c5fea32..7ca1cd0 100644
--- a/imap/ChangeLog
+++ b/imap/ChangeLog
@@ -1,3 +1,7 @@
+2022-01-17 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Fix minor memory leaks.
+
5.1.7
2022-01-16 Arjen de Korte <build+github@de-korte.org>
diff --git a/imap/imapd.c b/imap/imapd.c
index c0a4aa9..ccc1991 100644
--- a/imap/imapd.c
+++ b/imap/imapd.c
@@ -6591,16 +6591,11 @@ int uid=0;
static void dogethostname()
{
-char buf[2048];
-char *p;
+ char buf[2048];
if (gethostname(buf, sizeof(buf)) < 0)
strcpy(buf, "courier-imap");
- p=malloc(strlen(buf)+sizeof("HOSTNAME="));
- if (!p)
- write_error_exit(0);
- strcat(strcpy(p, "HOSTNAME="), buf);
- putenv(p);
+ setenv("HOSTNAME", buf, 1);
}
#if 0
@@ -6764,14 +6759,13 @@ int main(int argc, char **argv)
{
const char *p;
- putenv("TCPREMOTEIP=127.0.0.1");
- putenv("TCPREMOTEPORT=0");
+ setenv("TCPREMOTEIP", "127.0.0.1", 1);
+ setenv("TCPREMOTEPORT", "0", 1);
p=getenv("AUTHENTICATED");
if (!p || !*p)
{
struct passwd *pw=getpwuid(getuid());
- char *me;
if (!pw)
{
@@ -6781,12 +6775,7 @@ int main(int argc, char **argv)
exit(1);
}
- me=malloc(sizeof("AUTHENTICATED=")+strlen(pw->pw_name));
- if (!me)
- write_error_exit(0);
-
- strcat(strcpy(me, "AUTHENTICATED="), pw->pw_name);
- putenv(me);
+ setenv("AUTHENTICATED", pw->pw_name, 1);
}
}
@@ -6805,7 +6794,7 @@ int main(int argc, char **argv)
if (!protocol || !*protocol)
protocol="IMAP";
- putenv("IMAP_STARTTLS=NO"); /* No longer grok STARTTLS */
+ setenv("IMAP_STARTTLS", "NO", 1); /* No longer grok STARTTLS */
/* We use select() with a timeout, so use non-blocking filedescs */
diff --git a/imap/testsuite b/imap/testsuite
index 37a264b..268d370 100755
--- a/imap/testsuite
+++ b/imap/testsuite
@@ -130,7 +130,7 @@ EOF
inituid
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
a001 select inbox
a002 fetch 1 (bodystructure)
a003 fetch 1 (body[])
@@ -227,7 +227,7 @@ touch -t 199901010000 confmdtest/new/msg3
inituid
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
b000 status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
b001 select inbox
b001a status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
@@ -272,7 +272,7 @@ b031 fetch 2 (bodystructure)
adone logout
EOF
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
foo select inbox.bozo
foo store 1 +flags \Deleted
foo expunge
@@ -284,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 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
c001 select inbox
c002 append inbox {5}
test
@@ -314,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 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
d001 select inbox
d002 append inbox {5}
test
@@ -325,7 +325,7 @@ d005 noop
ddone logout
EOF
cat confmdtest/maildirsize
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
e001 select inbox
e002 copy 1:2 inbox
e003 noop
@@ -334,7 +334,7 @@ EOF
cat confmdtest/maildirsize
../maildir/maildirmake -f Trash confmdtest || exit 1
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
f001 select inbox
f002 copy 1:2 inbox
f002 copy 1:2 inbox.Trash
@@ -349,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 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
g001 select inbox
g002 select Trash
g003 select INBOX.Trash
@@ -373,7 +373,7 @@ chmod u-rwx confmdtest2/.b/cur
echo "test `pwd`/confmdtest2" >confmdtest/shared-maildirs
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
h001 list "" "*"
h002 list "" "%"
h003 list "" "%.%"
@@ -428,19 +428,19 @@ EOF
../maildir/maildirmake -f c confmdtest
../maildir/maildirmake -f Trash confmdtest2
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
ii001 list "" "*"
ii002 list "" "*"
iidone logout
EOF
-env IMAP_BROKENUIDV=1 IMAP_CHECK_ALL_FOLDERS=1 MAILDIR=confmdtest $IMAPINVOKE <<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
ii003 list "" "*"
ii004 list "" "*"
iidone logout
EOF
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
i001 select shared.test.b
i002 select shared.test.a
i003 close
@@ -524,7 +524,7 @@ EOF
inituid
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
T001 select INBOX
T002 fetch 1:* (uid body[header.fields(date)])
T003 THREAD ORDEREDSUBJECT US-ASCII ALL
@@ -545,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 $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
J001 list "" "*"
J002 lsub "" "*"
J003 SUBSCRIBE INBOX
@@ -630,7 +630,7 @@ EOF
inituid
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
K001 select INBOX
K002 THREAD REFERENCES US-ASCII ALL
KDONE logout
@@ -640,7 +640,7 @@ rm -rf confmdtest
../maildir/maildirmake confmdtest || exit 1
../maildir/maildirmake -f Trash confmdtest || exit 1
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
L001 CREATE INBOX.a
L002 CREATE INBOX.a.a
L003 CREATE INBOX.aa
@@ -682,7 +682,7 @@ rm -rf confmdtest
../maildir/maildirmake confmdtest || exit 1
../maildir/maildirmake -q 10C confmdtest || exit 1
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
M001 CREATE INBOX.a
M002 APPEND INBOX \Seen {5}
test
@@ -696,7 +696,7 @@ M008 RENAME INBOX.a INBOX.b
MDONE logout
EOF
cat confmdtest/maildirsize
-env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
M009 DELETE INBOX.b
MDONE logout
EOF
@@ -705,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 $IMAPINVOKE <<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
N001 LIST "" "*"
N002 append inbox \Deleted {11}
test
@@ -722,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 $IMAPINVOKE <<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
O001 append inbox NIL {11}
test
@@ -739,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 $IMAPINVOKE <<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
p001 SELECT INBOX
p002 CREATE INBOX.a
p003 COPY 1 INBOX.a
@@ -775,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 $IMAPINVOKE <<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
Q001 select INBOX
Q002 fetch 1:* FLAGS
Q003 status INBOX.Trash MESSAGES
@@ -792,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 $IMAPINVOKE <<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
R001 CREATE INBOX.a
R002 LIST (ACL MYRIGHTS POSTADDRESS) "" "*"
R003 ACL STORE INBOX owner -t
@@ -899,7 +899,7 @@ Subject: test
test
EOF
-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'
+env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
S001 SELECT INBOX.a
S002 COPY 1 INBOX.a
S003 NOOP
@@ -973,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 $IMAPINVOKE <<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
T001 ACL STORE INBOX user=user0 +l
T002 CREATE INBOX.a
T003 ACL STORE INBOX.a anyone +lr
@@ -985,7 +985,7 @@ user1
T005 LOGOUT
EOF
-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'
+env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 $IMAPINVOKE <<EOF
T010 ACL STORE INBOX anyone +l
T011 CREATE INBOX.a
T012 append INBOX.a \Seen {22}
@@ -996,14 +996,14 @@ user2
T013 LOGOUT
EOF
-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'
+env AUTHENTICATED=user0 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF
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 $IMAPINVOKE <<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
T030 LIST "" "#shared.*"
T031 LIST "" "#shared.%"
T032 LIST "" "#shared.a.%"
@@ -1038,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 $IMAPINVOKE <<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
a ENABLE UTF8=ACCEPT
T055 LIST "" "#shared.b.*"
T056 LIST "" "#shared.b.%"
@@ -1047,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 $IMAPINVOKE <<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
a ENABLE UTF8=ACCEPT
T055 LIST "" "#shared.b.*"
T056 LIST "" "#shared.b.%"
@@ -1071,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 $IMAPINVOKE <<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
T072 LIST "" #shared.*
T073 LIST(ACL) "" INBOX
T074 ACL STORE INBOX user=fred lr
@@ -1089,3 +1089,23 @@ T085 GETACL INBOX
T086 LIST(ACL) "" INBOX
TDONE LOGOUT
EOF
+
+rm -rf confmdtest confmdtest2
+../maildir/maildirmake confmdtest
+../maildir/maildirmake -S confmdtest2
+../maildir/maildirmake -s write -f writable confmdtest2
+../maildir/maildirmake --add another=`pwd`/confmdtest2 confmdtest
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest AUTHENTICATED=user1 $IMAPINVOKE <<EOF
+U001 APPEND INBOX \Seen {5}
+test
+
+U002 LIST "" "*"
+U003 SELECT INBOX
+U004 COPY 1 "shared.another.writable"
+U005 STATUS invalid (UIDVALIDITY)
+U006 DELETE INBOX
+U007 LISTRIGHTS INBOX user=user1
+U008 LISTRIGHTS shared.another.writable user=user1
+U009 MYRIGHTS INBOX
+EOF
diff --git a/imap/testsuite.txt b/imap/testsuite.txt
index e5a2888..834d6de 100644
--- a/imap/testsuite.txt
+++ b/imap/testsuite.txt
@@ -1699,3 +1699,27 @@
001413 T086 OK LIST completed
001414 * BYE Courier-IMAP server shutting down
001415 TDONE OK LOGOUT completed
+001416 * PREAUTH Ready.
+001417 + OK
+001418 U001 OK APPEND Ok.
+001419 * LIST (\HasNoChildren) "." "shared.another.writable"
+001419 * LIST (\Noselect \HasChildren) "." "shared"
+001419 * LIST (\Noselect \HasChildren) "." "shared.another"
+001419 * LIST (\Unmarked \HasNoChildren) "." "INBOX"
+001419 U002 OK LIST completed
+001420 * FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent)
+001421 * OK [PERMANENTFLAGS (\Draft \Answered \Flagged \Deleted \Seen)] Limited
+001422 * 1 EXISTS
+001423 * 0 RECENT
+001424 * OK [UIDVALIDITY] Ok
+001425 * OK [MYRIGHTS "acdilrsw"] ACL
+001426 U003 OK [READ-WRITE] Ok
+001427 U004 OK COPY completed.
+001428 U005 NO Mailbox does not exist, or must be subscribed to.
+001429 U006 NO Cannot delete currently-open folder.
+001430 * LISTRIGHTS "INBOX" "user=user1" "" a c d i l p r s w
+001430 U007 OK LISTRIGHTS completed.
+001431 * LISTRIGHTS "shared.another.writable" "user=user1" "" a c d i l p r s w
+001431 U008 OK LISTRIGHTS completed.
+001432 * MYRIGHTS "INBOX" "acdilrsw"
+001433 U009 OK MYRIGHTS completed.
diff --git a/imap/testsuitefix.pl.in b/imap/testsuitefix.pl.in
index abe0e6f..aa1ab87 100644
--- a/imap/testsuitefix.pl.in
+++ b/imap/testsuitefix.pl.in
@@ -12,6 +12,8 @@ $n=0;
while (<>)
{
+ s/UIDVALIDITY \d+/UIDVALIDITY/;
+ s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g;
s/\[COPYUID.*\] //;
s/\[APPENDUID.*\] //;
s/^\* ADD \"UID=.*/* ADD UID/;
diff --git a/sqwebmail/ChangeLog b/sqwebmail/ChangeLog
index 32bfd96..4cf2868 100644
--- a/sqwebmail/ChangeLog
+++ b/sqwebmail/ChangeLog
@@ -1,3 +1,7 @@
+2022-01-17 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * Fix minor memory leaks.
+
6.0.9
2022-01-16 Arjen de Korte <build+github@de-korte.org>