From e49769b64208ee00de00a0061cb29a1b555144b0 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 2 Dec 2010 04:37:38 +0000 Subject: [PATCH] lib-index: Added a missing sanity check for expunge-guid record's uid. This fixes a non-self healing assert-crash. --- src/lib-index/mail-index-sync-update.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib-index/mail-index-sync-update.c b/src/lib-index/mail-index-sync-update.c index 30da5935ef..89a2339ba8 100644 --- a/src/lib-index/mail-index-sync-update.c +++ b/src/lib-index/mail-index-sync-update.c @@ -558,8 +558,15 @@ int mail_index_sync_record(struct mail_index_sync_map_ctx *ctx, break; } end = CONST_PTR_OFFSET(data, hdr->size); - for (; rec != end; rec++) + for (; rec != end; rec++) { + if (rec->uid == 0) { + mail_index_sync_set_corrupted(ctx, + "Expunge-guid for invalid uid=%u", + rec->uid); + break; + } sync_expunge(ctx, rec->uid, rec->uid); + } break; } case MAIL_TRANSACTION_FLAG_UPDATE: { -- 2.47.3