From: Timo Sirainen Date: Tue, 9 Sep 2008 14:35:39 +0000 (+0300) Subject: Don't crash if trying to reset an extension which had a broken intro record. X-Git-Tag: 1.2.alpha2~68 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=02cb5bd5e448a15af945c7555bfbe658b680606b;p=thirdparty%2Fdovecot%2Fcore.git Don't crash if trying to reset an extension which had a broken intro record. --HG-- branch : HEAD --- diff --git a/src/lib-index/mail-index-sync-ext.c b/src/lib-index/mail-index-sync-ext.c index 6b56091d39..406802b8cc 100644 --- a/src/lib-index/mail-index-sync-ext.c +++ b/src/lib-index/mail-index-sync-ext.c @@ -464,7 +464,7 @@ int mail_index_sync_ext_intro(struct mail_index_sync_map_ctx *ctx, /* default to ignoring the following extension updates in case this intro is corrupted */ - ctx->cur_ext_map_idx = 0; + ctx->cur_ext_map_idx = (uint32_t)-2; ctx->cur_ext_ignore = TRUE; if (u->ext_id != (uint32_t)-1 && @@ -578,6 +578,10 @@ int mail_index_sync_ext_reset(struct mail_index_sync_map_ctx *ctx, "Extension reset without intro prefix"); return -1; } + if (ctx->cur_ext_map_idx == (uint32_t)-2 && ctx->cur_ext_ignore) { + /* previous extension intro was broken */ + return -1; + } /* since we're resetting the extension, don't check cur_ext_ignore */ /* a new index file will be created, so the old data won't be