From: Timo Sirainen Date: Wed, 5 Feb 2025 09:50:43 +0000 (+0200) Subject: lib-settings: Allow spaces in "key +=value" X-Git-Tag: 2.4.1~216 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a8cf675401018ec1dd8157b5d934d0bbbeff65e2;p=thirdparty%2Fdovecot%2Fcore.git lib-settings: Allow spaces in "key +=value" This is useful in configuring userdb_fields { key += value } --- diff --git a/src/lib-settings/settings.c b/src/lib-settings/settings.c index dde9251701..78582821b2 100644 --- a/src/lib-settings/settings.c +++ b/src/lib-settings/settings.c @@ -12,6 +12,8 @@ #include "settings.h" #include "var-expand.h" +#include + enum set_seen_type { /* Setting has not been changed */ SET_SEEN_NO, @@ -2704,7 +2706,10 @@ settings_override_fill(struct settings_override *set, pool_t pool, if (len > 0 && key[len-1] == '+') { /* key+=value */ set->append = TRUE; - key = t_strndup(key, len-1); + len--; + while (len > 0 && i_isspace(key[len-1])) + len--; + key = t_strndup(key, len); } set->key = set->orig_key = p_strdup(pool, key); set->path_element_count = path_element_count(set->key);