]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm batch: Fix assert-crash that happened when it was attempted to be used
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 10 Dec 2020 08:54:25 +0000 (10:54 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 30 Jun 2021 11:12:28 +0000 (11:12 +0000)
Fixes:
Panic: file mail-storage.c: line 1067 (mailbox_set_reason): assertion failed: (reason != NULL)

src/doveadm/doveadm-mail-batch.c

index 2f15ad17ab1318c96dd82b937fb87bc0a3dc92e1..b9eb909329cb35905c956148a2578ec736e0726b 100644 (file)
@@ -55,7 +55,6 @@ cmd_batch_add(struct batch_cmd_context *batchctx,
 {
        struct doveadm_mail_cmd_context *subctx;
        const struct doveadm_cmd_ver2 *cmd_ver2;
-       struct doveadm_mail_cmd tmpcmd;
        const struct doveadm_mail_cmd *cmd;
        const char *getopt_args;
        int c;
@@ -65,11 +64,12 @@ cmd_batch_add(struct batch_cmd_context *batchctx,
        if (cmd_ver2 == NULL)
                cmd = doveadm_mail_cmd_find_from_argv(argv[0], &argc, &argv);
        else {
-               i_zero(&tmpcmd);
-               tmpcmd.usage_args = cmd_ver2->usage;
-               tmpcmd.name = cmd_ver2->name;
-               tmpcmd.alloc = cmd_ver2->mail_cmd;
-               cmd = &tmpcmd;
+               struct doveadm_mail_cmd *dyncmd =
+                       p_new(batchctx->ctx.pool, struct doveadm_mail_cmd, 1);
+               dyncmd->usage_args = cmd_ver2->usage;
+               dyncmd->name = cmd_ver2->name;
+               dyncmd->alloc = cmd_ver2->mail_cmd;
+               cmd = dyncmd;
        }
 
        if (cmd == NULL)