{
ARRAY_TYPE(doveadm_cmd_param_arr_t) pargv;
unsigned int pargc;
- pool_t pool = pool_datastack_create();
+ pool_t pool = pool_alloconly_create("doveadm cmdline", 1024);
i_getopt_reset();
p_array_init(&pargv, pool, 20);
- if (doveadm_cmd_process_options(argc, argv, cctx, pool, &pargv) < 0)
+ if (doveadm_cmd_process_options(argc, argv, cctx, pool, &pargv) < 0) {
+ pool_unref(&pool);
return -1;
+ }
unsigned int ptr_count;
struct doveadm_cmd_param *ptr = array_get_modifiable(&pargv, &ptr_count);
e_error(cctx->event, "Invalid parameter: %s",
t_strarray_join(argv + optind, " "));
doveadm_cmd_params_clean(&pargv);
+ pool_unref(&pool);
return -1;
}
found = TRUE;
e_error(cctx->event, "Extraneous arguments found: %s",
t_strarray_join(argv + optind, " "));
doveadm_cmd_params_clean(&pargv);
+ pool_unref(&pool);
return -1;
}
if (is_keyvalue)
cctx->cmd->cmd(cctx);
doveadm_cmd_params_clean(&pargv);
+ pool_unref(&pool);
return 0;
}