diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-01-12 20:10:40 +0800 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-01-12 20:10:40 +0800 |
commit | f069efb4710332139ac508180cb8246b02428c17 (patch) | |
tree | 94fe26fe374e5f79519453e786ebfdac367a2821 | |
parent | 09ecd746c9d6581664873674c2188f8c93ed7780 (diff) |
core: don't allow setting NOTIFY_SOCKET and similar env vars we need ourselves via SetEnvironment bus calls
We just quietly eat them up, so that simple environment importing still
works without error.
-rw-r--r-- | src/core/manager.c | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/src/core/manager.c b/src/core/manager.c index 91c3d59d2b..95fc7e64ac 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -332,6 +332,23 @@ static int manager_setup_signals(Manager *m) { return 0; } +static void manager_clean_environment(Manager *m) { + assert(m); + + /* Let's remove some environment variables that we + * need ourselves to communicate with our clients */ + strv_env_unset_many( + m->environment, + "NOTIFY_SOCKET", + "MAINPID", + "MANAGERPID", + "LISTEN_PID", + "LISTEN_FDS", + "WATCHDOG_PID", + "WATCHDOG_USEC", + NULL); +} + static int manager_default_environment(Manager *m) { assert(m); @@ -352,24 +369,12 @@ static int manager_default_environment(Manager *m) { /* The user manager passes its own environment * along to its children. */ m->environment = strv_copy(environ); - - /* Let's remove some environment variables that we - * need ourselves to communicate with our clients */ - strv_env_unset_many( - m->environment, - "NOTIFY_SOCKET", - "MAINPID", - "MANAGERPID", - "LISTEN_PID", - "LISTEN_FDS", - "WATCHDOG_PID", - "WATCHDOG_USEC", - NULL); } if (!m->environment) return -ENOMEM; + manager_clean_environment(m); strv_sort(m->environment); return 0; @@ -2689,7 +2694,10 @@ int manager_environment_add(Manager *m, char **minus, char **plus) { if (b != l) strv_free(b); - m->environment = strv_sort(l); + m->environment = l; + manager_clean_environment(m); + strv_sort(m->environment); + return 0; } |