projects
/
citadel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix possible buffer underrun (by 1;-)
[citadel.git]
/
citadel
/
modules
/
imap
/
imap_tools.c
diff --git
a/citadel/modules/imap/imap_tools.c
b/citadel/modules/imap/imap_tools.c
index d1c5d9580df5006cd58e625d5299f9e847ba7100..e3cc6bffce11a878c15b5f25e8783ae4c51ccd89 100644
(file)
--- a/
citadel/modules/imap/imap_tools.c
+++ b/
citadel/modules/imap/imap_tools.c
@@
-569,13
+569,13
@@
void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf)
if (qrbuf->QRflags & QR_MAILBOX)
{
if (strcasecmp(qrbuf->QRname+11, MAILROOM) == 0)
if (qrbuf->QRflags & QR_MAILBOX)
{
if (strcasecmp(qrbuf->QRname+11, MAILROOM) == 0)
-
p =
toimap(p, bufend, "INBOX");
+ toimap(p, bufend, "INBOX");
else
{
p = toimap(p, bufend, "INBOX");
if (p < bufend)
*p++ = '/';
else
{
p = toimap(p, bufend, "INBOX");
if (p < bufend)
*p++ = '/';
-
p =
toimap(p, bufend, qrbuf->QRname+11);
+ toimap(p, bufend, qrbuf->QRname+11);
}
}
else
}
}
else
@@
-586,7
+586,7
@@
void imap_mailboxname(char *buf, int bufsize, struct ctdlroom *qrbuf)
p = toimap(p, bufend, fl->f_name);
if (p < bufend)
*p++ = '/';
p = toimap(p, bufend, fl->f_name);
if (p < bufend)
*p++ = '/';
-
p =
toimap(p, bufend, qrbuf->QRname);
+ toimap(p, bufend, qrbuf->QRname);
}
}
}
}
@@
-840,7
+840,10
@@
star:
}
return WILDMAT_TRUE;
}
}
return WILDMAT_TRUE;
}
- while (!IsEmptyStr(text) && (*(text - 1) != WILDMAT_DELIM)) {
+ while (!IsEmptyStr(text) &&
+ /* make shure texst - 1 isn't before lcase_p */
+ ((text == lcase_text) || (*(text - 1) != WILDMAT_DELIM)))
+ {
if ((matched = do_imap_match(text++, p))
!= WILDMAT_FALSE) {
return matched;
if ((matched = do_imap_match(text++, p))
!= WILDMAT_FALSE) {
return matched;