# HG changeset patch # User Timo Sirainen # Date 1184203462 -10800 # Node ID 5825961b986293c1a2e6ee584c0d4fed3249acae # Parent 874428d05272daff60fdd60619a594cc83ee819b Make sure that uid < next_uid if uidlist version is 1. diff -r 874428d05272 -r 5825961b9862 src/lib-storage/index/maildir/maildir-uidlist.c --- a/src/lib-storage/index/maildir/maildir-uidlist.c Thu Jul 12 04:24:00 2007 +0300 +++ b/src/lib-storage/index/maildir/maildir-uidlist.c Thu Jul 12 04:24:22 2007 +0300 @@ -324,6 +324,13 @@ } uidlist->last_seen_uid = uid; + if (uid >= uidlist->next_uid && uidlist->version == 1) { + mail_storage_set_critical(storage, + "UID larger than next_uid in file %s (%u >= %u)", + uidlist->path, uid, uidlist->next_uid); + return 0; + } + rec = p_new(uidlist->record_pool, struct maildir_uidlist_rec, 1); rec->uid = uid; rec->flags = MAILDIR_UIDLIST_REC_FLAG_NONSYNCED; @@ -385,6 +392,13 @@ uidlist->path); return 0; } + if (uid_validity == uidlist->uid_validity && + next_uid < uidlist->next_uid) { + mail_storage_set_critical(storage, + "%s: next_uid was lowered (v1, %u -> %u)", + uidlist->path, uidlist->next_uid, next_uid); + return 0; + } break; case 3: ext_hdr = uidlist->hdr_extensions;