1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-23 21:35:11 +03:00

core: rework how we treat specifiers in Environment= of transient units

Let's validate the data passed in after resolving specifiers, but let's
write out to the unit snippet the list without specifiers applied. This
way the pre-existing comment actually starts matching what is actually
implemented.
This commit is contained in:
Lennart Poettering 2017-09-12 20:07:30 +02:00
parent 41de9cc29e
commit 1c68232ee2

View File

@ -1817,13 +1817,13 @@ int bus_exec_context_set_transient_property(
if (r < 0)
return r;
if (!strv_env_is_valid(l))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment block.");
r = unit_full_printf_strv(u, l, &q);
if (r < 0)
return r;
if (!strv_env_is_valid(q))
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid environment block.");
if (mode != UNIT_CHECK) {
if (strv_length(q) == 0) {
c->environment = strv_free(c->environment);
@ -1840,7 +1840,7 @@ int bus_exec_context_set_transient_property(
c->environment = e;
/* We write just the new settings out to file, with unresolved specifiers */
joined = strv_join_quoted(q);
joined = strv_join_quoted(l);
if (!joined)
return -ENOMEM;