]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
main: when reloading PID 1 let's reset the default environment 10835/head
authorLennart Poettering <lennart@poettering.net>
Mon, 19 Nov 2018 11:23:13 +0000 (12:23 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 19 Nov 2018 12:01:19 +0000 (13:01 +0100)
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
src/core/main.c
src/core/manager.c
src/core/manager.h

index f1dad983b722d657db6017ce09f760eecf6d53ff..70227da4b77441d0edb8b4ba5500967710b33a7d 100644 (file)
@@ -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) {
index eba4bf356da8d4ef19f20991187fd7c5f313b151..f4fdd91c2c41c4033f1ed0704032ffc0b3c2cd04 100644 (file)
@@ -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);
index b65c4c8451f7ea9c367fbf9688cdaa3ba1f7b30f..f3ad44d26e20445004ecdaa5c17615e580a51845 100644 (file)
@@ -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);