dovecot: Don't access freed memory. Caused crashes sometimes.
dovecot at dovecot.org
dovecot at dovecot.org
Sat Sep 15 15:58:31 EEST 2007
details: http://hg.dovecot.org/dovecot/rev/799b6c593cad
changeset: 6392:799b6c593cad
user: Timo Sirainen <tss at iki.fi>
date: Sat Sep 15 15:54:11 2007 +0300
description:
Don't access freed memory. Caused crashes sometimes.
diffstat:
1 file changed, 4 insertions(+), 5 deletions(-)
src/lib-storage/index/maildir/maildir-save.c | 9 ++++-----
diffs (29 lines):
diff -r c5cff3c6828a -r 799b6c593cad src/lib-storage/index/maildir/maildir-save.c
--- a/src/lib-storage/index/maildir/maildir-save.c Sat Sep 15 15:29:16 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-save.c Sat Sep 15 15:54:11 2007 +0300
@@ -670,6 +670,9 @@ int maildir_transaction_save_commit_pre(
ret = -1;
}
+ *t->ictx.saved_uid_validity =
+ maildir_uidlist_get_uid_validity(ctx->mbox->uidlist);
+
if (sync_commit) {
/* It doesn't matter if index syncing fails */
(void)maildir_sync_index_finish(&ctx->sync_ctx,
@@ -698,14 +701,10 @@ int maildir_transaction_save_commit_pre(
void maildir_transaction_save_commit_post(struct maildir_save_context *ctx)
{
- struct maildir_transaction_context *t =
- (struct maildir_transaction_context *)ctx->ctx.transaction;
+ ctx->ctx.transaction = NULL; /* transaction is already freed */
if (ctx->locked)
maildir_uidlist_unlock(ctx->mbox->uidlist);
-
- *t->ictx.saved_uid_validity =
- maildir_uidlist_get_uid_validity(ctx->mbox->uidlist);
if (ctx->mail != NULL)
mail_free(&ctx->mail);
More information about the dovecot-cvs
mailing list