From: Timo Sirainen Date: Tue, 14 Nov 2023 10:47:19 +0000 (+0200) Subject: lib-settings: Fix accessing override setting whose filter was just updated X-Git-Tag: 2.4.1~1320 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=529009db6eef6441ef678f2420bfb50313a7afcb;p=thirdparty%2Fdovecot%2Fcore.git lib-settings: Fix accessing override setting whose filter was just updated set->key was stored before settings_override_filter_match() updated it, causing the setting lookup to fail later on. --- diff --git a/src/lib-settings/settings.c b/src/lib-settings/settings.c index b7ed85a97b..ac1fbd0c18 100644 --- a/src/lib-settings/settings.c +++ b/src/lib-settings/settings.c @@ -1315,7 +1315,6 @@ settings_instance_override(struct settings_apply_ctx *ctx, continue; /* already applied */ set = *set_elem; - const char *key = set->key, *value; unsigned int key_idx; int ret; @@ -1341,6 +1340,9 @@ settings_instance_override(struct settings_apply_ctx *ctx, null_strcmp(ctx->filter_value, set->last_filter_value) == 0) seen_filter = TRUE; + /* Set key only after settings_override_filter_match() has + potentially changed it. */ + const char *key = set->key, *value; ret = settings_override_get_value(ctx, set, &key, &key_idx, &value, error_r); if (ret < 0)