From: Timo Sirainen Date: Tue, 9 Jan 2024 22:10:39 +0000 (-0500) Subject: lib-settings, config: Don't allow named list filters to begin with "__" X-Git-Tag: 2.4.1~1082 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3ffef0f77c64df38e9e503c6a267b7b62fa63e83;p=thirdparty%2Fdovecot%2Fcore.git lib-settings, config: Don't allow named list filters to begin with "__" These are reserved for filters created in the code. --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 98e9ae15a5..e6f41ad486 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -572,6 +572,13 @@ config_apply_exact_line(struct config_parser_context *ctx, return -1; break; case SET_FILTER_ARRAY: + if (str_begins_with(value, "__")) { + /* These are reserved for internal filters */ + ctx->error = p_strdup_printf(ctx->pool, + "Named list filter name must not begin with '__': %s", + value); + return -1; + } if (config_apply_filter_array(ctx, line, value, &l->settings[config_key->define_idx].array) < 0) return -1; diff --git a/src/lib-settings/settings.c b/src/lib-settings/settings.c index d23eff07c9..15dcf185f2 100644 --- a/src/lib-settings/settings.c +++ b/src/lib-settings/settings.c @@ -1484,6 +1484,14 @@ settings_instance_override(struct settings_apply_ctx *ctx, } value = str_c(ctx->str); } + if (ctx->info->defines[key_idx].type == SET_FILTER_ARRAY && + set->type <= SETTINGS_OVERRIDE_TYPE_CLI_PARAM && + str_begins_with(value, "__")) { + *error_r = t_strdup_printf( + "Named list filter name must not begin with '__': %s", + value); + return -1; + } if (value != set->value) value = p_strdup(&ctx->mpool->pool, value);