Mercurial > dovecot > core-2.2
changeset 12953:d3d635ee3016
maildir: If uidlist has an empty GUID entry, log an error and remove it.
This fixes an assert-crash in dsync.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 20 Apr 2011 17:44:36 +0300 |
parents | 811a6d173bb2 |
children | 4fe53879ceb1 |
files | src/lib-storage/index/maildir/maildir-mail.c |
diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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: */