Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9519:d00abdaf9df2 HEAD
maildir: Fixed potential assert-crashes with "Duplicate file entry" handling.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 23 Dec 2009 13:02:55 -0500 |
parents | ef7b42b237bd |
children | d1548d794f72 |
files | src/lib-storage/index/maildir/maildir-uidlist.c |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Tue Dec 22 18:22:43 2009 -0500 +++ b/src/lib-storage/index/maildir/maildir-uidlist.c Wed Dec 23 13:02:55 2009 -0500 @@ -399,10 +399,18 @@ unsigned int idx, count; recs = array_get(&uidlist->records, &count); - pos = bsearch(&rec, recs, count, sizeof(*recs), maildir_uid_cmp); - i_assert(pos != NULL); - - idx = pos - recs; + if (!uidlist->unsorted) { + pos = bsearch(&rec, recs, count, sizeof(*recs), + maildir_uid_cmp); + i_assert(pos != NULL); + idx = pos - recs; + } else { + for (idx = 0; idx < count; idx++) { + if (recs[idx]->uid == rec->uid) + break; + } + i_assert(idx != count); + } array_delete(&uidlist->records, idx, 1); return idx; }