i_zero(&body_field);
body_field.print = fetch_body_field;
- t_array_init(&ctx->fields, 32);
- t_array_init(&ctx->header_fields, 32);
+ p_array_init(&ctx->fields, ctx->ctx.pool, 32);
+ p_array_init(&ctx->header_fields, ctx->ctx.pool, 32);
for (; *fields != NULL; fields++) {
name = t_str_lcase(*fields);
ctx->wanted_fields |= field->wanted_fields;
array_push_back(&ctx->fields, field);
} else if (str_begins(name, "hdr.", &name)) {
- hdr_field.name = name;
+ hdr_field.name = p_strdup(ctx->ctx.pool, name);
array_push_back(&ctx->fields, &hdr_field);
- name = t_strcut(name, '.');
+ name = p_strdup(ctx->ctx.pool, t_strcut(name, '.'));
array_push_back(&ctx->header_fields, &name);
} else if (str_begins(name, "body.", §ion) ||
str_begins(name, "binary.", §ion)) {
- body_field.name = t_strarray_join(t_strsplit(name, ","), " ");
+ body_field.name = p_strdup(ctx->ctx.pool,
+ t_strarray_join(t_strsplit(name, ","), " "));
if (imap_msgpart_parse(section, &msgpart) < 0) {
print_fetch_fields();
if (!ctx->all_fields) {
if (!doveadm_cmd_param_str(cctx, "fieldstr", &value_str))
i_fatal_status(EX_USAGE, "Missing fields parameter");
- ctx->fields = t_strsplit_spaces(value_str, ", ");
+ ctx->fields = (const char *const *)p_strsplit_spaces(_ctx->pool, value_str, ", ");
}
if (!doveadm_cmd_param_array(cctx, "mailbox", &ctx->boxes))