]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: Added a missing sanity check for expunge-guid record's uid.
authorTimo Sirainen <tss@iki.fi>
Thu, 2 Dec 2010 04:37:38 +0000 (04:37 +0000)
committerTimo Sirainen <tss@iki.fi>
Thu, 2 Dec 2010 04:37:38 +0000 (04:37 +0000)
This fixes a non-self healing assert-crash.

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

index 30da5935efbf264e6a0532f3cdf6d527ac3451d7..89a2339ba8a47271a58f814426d71a7ed98263d3 100644 (file)
@@ -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: {