]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-settings: settings_get_params() - Fix using provided escape_func
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 23 Feb 2026 11:37:09 +0000 (13:37 +0200)
committerRebaser <foobar@foobar>
Thu, 26 Mar 2026 08:41:12 +0000 (08:41 +0000)
This fixes auth-sql and auth-ldap to actually do escaping.

src/lib-settings/settings.c

index 6b22ce3a384512d3de6d422ce1abb56ef5dfa086..c7fef9fe52212007cc0f15d33c4b859c2bde53c8 100644 (file)
@@ -1673,8 +1673,14 @@ settings_var_expand_init(struct settings_apply_ctx *ctx)
        ctx->var_params.tables_arr = array_front(&init_ctx.tables);
        ctx->var_params.providers_arr = array_front(&init_ctx.providers);
        ctx->var_params.contexts = array_front(&init_ctx.contexts);
-       ctx->var_params.escape_func = init_ctx.escape_func;
-       ctx->var_params.escape_context = init_ctx.escape_context;
+       if (ctx->escape_func != NULL) {
+               /* settings_get_params()'s escape_func overrides all others */
+               ctx->var_params.escape_func = ctx->escape_func;
+               ctx->var_params.escape_context = ctx->escape_context;
+       } else {
+               ctx->var_params.escape_func = init_ctx.escape_func;
+               ctx->var_params.escape_context = init_ctx.escape_context;
+       }
        ctx->var_params.event = ctx->event;
 }