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