dovecot-2.0: maildir: Remove invalid extension records from dove...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Apr 20 17:58:14 EEST 2011
details: http://hg.dovecot.org/dovecot-2.0/rev/4fe53879ceb1
changeset: 12747:4fe53879ceb1
user: Timo Sirainen <tss at iki.fi>
date: Wed Apr 20 17:57:20 2011 +0300
description:
maildir: Remove invalid extension records from dovecot-uidlist.
For now we'll assume that if the key is outside A..Z it's invalid. Since
only 4 keys are used currently, there is still a lot of letters available
for future use.
diffstat:
src/lib-storage/index/maildir/maildir-uidlist.c | 11 +++++++++--
src/lib-storage/index/maildir/maildir-uidlist.h | 2 ++
2 files changed, 11 insertions(+), 2 deletions(-)
diffs (33 lines):
diff -r d3d635ee3016 -r 4fe53879ceb1 src/lib-storage/index/maildir/maildir-uidlist.c
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Wed Apr 20 17:44:36 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c Wed Apr 20 17:57:20 2011 +0300
@@ -423,8 +423,15 @@
/* skip over an extension field */
start = line;
while (*line != ' ' && *line != '\0') line++;
- buffer_append(buf, start, line - start);
- buffer_append_c(buf, '\0');
+ if (MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(*start)) {
+ buffer_append(buf, start, line - start);
+ buffer_append_c(buf, '\0');
+ } else {
+ maildir_uidlist_set_corrupted(uidlist,
+ "Invalid extension record, removing: %s",
+ t_strdup_until(start, line));
+ uidlist->recreate = TRUE;
+ }
while (*line == ' ') line++;
}
diff -r d3d635ee3016 -r 4fe53879ceb1 src/lib-storage/index/maildir/maildir-uidlist.h
--- a/src/lib-storage/index/maildir/maildir-uidlist.h Wed Apr 20 17:44:36 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-uidlist.h Wed Apr 20 17:57:20 2011 +0300
@@ -37,6 +37,8 @@
MAILDIR_UIDLIST_HDR_EXT_POP3_UIDL_FORMAT = 'P'
};
+#define MAILDIR_UIDLIST_REC_EXT_KEY_IS_VALID(c) \
+ ((c) >= 'A' && (c) <= 'Z')
enum maildir_uidlist_rec_ext_key {
/* Physical message size. If filename also contains ,S=<vsize> this
isn't written to uidlist. */
More information about the dovecot-cvs
mailing list