]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Don't crash if trying to reset an extension which had a broken intro record.
authorTimo Sirainen <tss@iki.fi>
Tue, 9 Sep 2008 14:35:39 +0000 (17:35 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 9 Sep 2008 14:35:39 +0000 (17:35 +0300)
--HG--
branch : HEAD

src/lib-index/mail-index-sync-ext.c

index 6b56091d3974a8497c0629f06670f2e118bfdd80..406802b8cc949a9406d33ec3e3792c39218037ac 100644 (file)
@@ -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