summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-11-19 12:23:13 +0100
committerLennart Poettering <lennart@poettering.net>2018-11-19 13:01:19 +0100
commit79a224c46012f2817e3fa431ff30d10f4d3b6626 (patch)
tree27e257f5b581059570de956c70be39e1737159c5 /src
parent2fbbbf9a5fbcc71c91a93642f227864568d3a699 (diff)
downloadsystemd-79a224c46012f2817e3fa431ff30d10f4d3b6626.tar.gz
main: when reloading PID 1 let's reset the default environment
Otherwise we keep collecting stuff from env generators, and we really shouldn't. This was working properly on reexec but not on reload, as for reexec we would always start fresh, but for reload would reuse the Manager object and hence its default environment set. Fixes: #10671
Diffstat (limited to 'src')
-rw-r--r--src/core/main.c6
-rw-r--r--src/core/manager.c2
-rw-r--r--src/core/manager.h1
3 files changed, 6 insertions, 3 deletions
diff --git a/src/core/main.c b/src/core/main.c
index f1dad983b7..70227da4b7 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -767,8 +767,10 @@ static void set_manager_defaults(Manager *m) {
m->default_tasks_accounting = arg_default_tasks_accounting;
m->default_tasks_max = arg_default_tasks_max;
- manager_set_default_rlimits(m, arg_default_rlimit);
- manager_transient_environment_add(m, arg_default_environment);
+ (void) manager_set_default_rlimits(m, arg_default_rlimit);
+
+ (void) manager_default_environment(m);
+ (void) manager_transient_environment_add(m, arg_default_environment);
}
static void set_manager_settings(Manager *m) {
diff --git a/src/core/manager.c b/src/core/manager.c
index eba4bf356d..f4fdd91c2c 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -600,7 +600,7 @@ static char** sanitize_environment(char **l) {
return l;
}
-static int manager_default_environment(Manager *m) {
+int manager_default_environment(Manager *m) {
assert(m);
m->transient_environment = strv_free(m->transient_environment);
diff --git a/src/core/manager.h b/src/core/manager.h
index b65c4c8451..f3ad44d26e 100644
--- a/src/core/manager.h
+++ b/src/core/manager.h
@@ -442,6 +442,7 @@ void manager_clear_jobs(Manager *m);
unsigned manager_dispatch_load_queue(Manager *m);
+int manager_default_environment(Manager *m);
int manager_transient_environment_add(Manager *m, char **plus);
int manager_client_environment_modify(Manager *m, char **minus, char **plus);
int manager_get_effective_environment(Manager *m, char ***ret);