From: Karl Fleischmann Date: Thu, 28 Aug 2025 15:44:03 +0000 (+0200) Subject: config: import_environment - Allow spaces in values by separating them with tabs X-Git-Tag: 2.4.2~459 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b6d9011345388817880b456d4a87b26fa5805a2;p=thirdparty%2Fdovecot%2Fcore.git config: import_environment - Allow spaces in values by separating them with tabs --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 0243a4b196..373cd13657 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -3601,14 +3601,15 @@ config_parsed_strlist_append(string_t *keyvals, i_assert(strlist[i + 1][0] == CONFIG_VALUE_PREFIX_EXPANDED); if (str_len(keyvals) > 0) - str_append_c(keyvals, ' '); + str_append_c(keyvals, '\t'); for (j = 0; j < drop_len; j += 2) { if (strcmp(strlist[i] + 1, drop_strlist[j]) == 0) break; } if (j == drop_len) { - str_printfa(keyvals, "%s=%s", strlist[i] + 1, - strlist[i + 1] + 1); + str_append_tabescaped(keyvals, strlist[i] + 1); + str_append_c(keyvals, '='); + str_append_tabescaped(keyvals, strlist[i + 1] + 1); } } } diff --git a/src/lib-master/master-service-settings.c b/src/lib-master/master-service-settings.c index 7d10707f3d..87892bc575 100644 --- a/src/lib-master/master-service-settings.c +++ b/src/lib-master/master-service-settings.c @@ -19,6 +19,7 @@ #include "stats-client.h" #include "master-service-private.h" #include "master-service-settings.h" +#include "strescape.h" #include #include @@ -656,10 +657,12 @@ master_service_get_import_environment_keyvals(struct master_service *service) for (unsigned int i = 0; i < len; i += 2) { const char *const *key = array_idx(&arr, i); const char *const *val = array_idx(&arr, i + 1); - str_append(keyvals, t_strdup_printf("%s=%s", *key, *val)); + str_append_tabescaped(keyvals, *key); + str_append_c(keyvals, '='); + str_append_tabescaped(keyvals, *val); if (i + 2 < len) - str_append_c(keyvals, ' '); + str_append_c(keyvals, '\t'); } return str_c(keyvals); } diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 32faf1b206..abac39c034 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -1029,7 +1029,7 @@ static void master_service_import_environment_real(const char *import_environmen array_push_back(&keys, &value); #endif /* add new environments */ - envs = t_strsplit_spaces(import_environment, " "); + envs = t_strsplit_tabescaped(import_environment); expanded = t_str_new(64); for (; *envs != NULL; envs++) { value = strchr(*envs, '=');