dovecot-2.0: maildir: If uidlist has an empty GUID entry, log an...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Apr 20 17:44:41 EEST 2011
details: http://hg.dovecot.org/dovecot-2.0/rev/d3d635ee3016
changeset: 12746:d3d635ee3016
user: Timo Sirainen <tss at iki.fi>
date: Wed Apr 20 17:44:36 2011 +0300
description:
maildir: If uidlist has an empty GUID entry, log an error and remove it.
This fixes an assert-crash in dsync.
diffstat:
src/lib-storage/index/maildir/maildir-mail.c | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diffs (23 lines):
diff -r 811a6d173bb2 -r d3d635ee3016 src/lib-storage/index/maildir/maildir-mail.c
--- a/src/lib-storage/index/maildir/maildir-mail.c Wed Apr 13 12:40:48 2011 +0300
+++ b/src/lib-storage/index/maildir/maildir-mail.c Wed Apr 20 17:44:36 2011 +0300
@@ -485,8 +485,17 @@
guid = maildir_uidlist_lookup_ext(mbox->uidlist, _mail->uid,
MAILDIR_UIDLIST_REC_EXT_GUID);
if (guid != NULL) {
- *value_r = p_strdup(mail->data_pool, guid);
- return 0;
+ if (*guid != '\0') {
+ *value_r = p_strdup(mail->data_pool, guid);
+ return 0;
+ }
+
+ mail_storage_set_critical(_mail->box->storage,
+ "Maildir %s: Corrupted dovecot-uidlist: "
+ "UID %u had empty GUID, clearing it",
+ _mail->box->path, _mail->uid);
+ maildir_uidlist_set_ext(mbox->uidlist, _mail->uid,
+ MAILDIR_UIDLIST_REC_EXT_GUID, NULL);
}
/* default to base filename: */
More information about the dovecot-cvs
mailing list