]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
maildir: Fix error handling if dovecot-uidlist file is unexpectedly lost
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 14 Oct 2025 09:49:54 +0000 (12:49 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Tue, 14 Oct 2025 15:27:29 +0000 (15:27 +0000)
It would have failed with lseek() error.

src/lib-storage/index/maildir/maildir-uidlist.c

index 21de7c7d30a6d3045f6b2a61e01a576ff026cc05..e9602f1f37f73c5cffb014fc2b3b918f4e938046 100644 (file)
@@ -1539,7 +1539,7 @@ static int maildir_uidlist_sync_update(struct maildir_uidlist_sync_ctx *ctx)
                i_assert(uidlist->initial_hdr_read);
                if (maildir_uidlist_open_latest(uidlist) < 0)
                        return -1;
-               if (uidlist->recreate_on_change)
+               if (uidlist->fd == -1 || uidlist->recreate_on_change)
                        return maildir_uidlist_recreate(uidlist);
        }
        i_assert(ctx->first_unwritten_pos != UINT_MAX);