]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: Don't use data stack when building extension header
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 29 Jul 2021 09:38:12 +0000 (12:38 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 11 Aug 2021 12:52:33 +0000 (12:52 +0000)
Some users may have thousands of mailboxes, which grows the data stack
unnecessarily large.

src/plugins/virtual/virtual-sync.c

index c1b0a4daeef116ccf0bd1fbb581c7fded7e20b5e..ab321dc3dc3bb17ca9d3cafb3519efc54e6abf95 100644 (file)
@@ -300,7 +300,7 @@ static void virtual_sync_ext_header_rewrite(struct virtual_sync_context *ctx)
        ext_hdr.highest_mailbox_id = ctx->mbox->highest_mailbox_id;
        ext_hdr.search_args_crc32 = ctx->mbox->search_args_crc32;
 
-       buf = t_buffer_create(name_pos + 256);
+       buf = buffer_create_dynamic(default_pool, name_pos + 256);
        buffer_append(buf, &ext_hdr, sizeof(ext_hdr));
 
        for (i = 0; i < count; i++) {
@@ -339,6 +339,7 @@ static void virtual_sync_ext_header_rewrite(struct virtual_sync_context *ctx)
        }
        mail_index_update_header_ext(ctx->trans, ctx->mbox->virtual_ext_id,
                                     0, buf->data, name_pos);
+       buffer_free(&buf);
 }
 
 static void virtual_sync_ext_header_update(struct virtual_sync_context *ctx)