1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-27 07:22:31 +03:00

Merge pull request #26579 from poettering/manager-env-clean-up

service manager env var clean-up fixes
This commit is contained in:
Lennart Poettering 2023-02-24 14:11:57 +01:00 committed by GitHub
commit 0a75dca1cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 7 deletions

View File

@ -3755,6 +3755,15 @@ StandardInputData=V2XigLJyZSBubyBzdHJhbmdlcnMgdG8gbG92ZQpZb3Uga25vdyB0aGUgcnVsZX
system.</para></listitem> system.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><varname>$REMOTE_ADDR</varname></term>
<term><varname>$REMOTE_PORT</varname></term>
<listitem><para>If this is a unit started via per-connection socket activation (i.e. via a socket
unit with <varname>Accept=yes</varname>), these environment variables contain the IP address and
port number of the remote peer of the socket connection.</para></listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><varname>$TRIGGER_UNIT</varname></term> <term><varname>$TRIGGER_UNIT</varname></term>
<term><varname>$TRIGGER_PATH</varname></term> <term><varname>$TRIGGER_PATH</varname></term>

View File

@ -635,8 +635,14 @@ static char** sanitize_environment(char **l) {
"LISTEN_FDS", "LISTEN_FDS",
"LISTEN_PID", "LISTEN_PID",
"LOGS_DIRECTORY", "LOGS_DIRECTORY",
"LOG_NAMESPACE",
"MAINPID", "MAINPID",
"MANAGERPID", "MANAGERPID",
"MONITOR_EXIT_CODE",
"MONITOR_EXIT_STATUS",
"MONITOR_INVOCATION_ID",
"MONITOR_SERVICE_RESULT",
"MONITOR_UNIT",
"NOTIFY_SOCKET", "NOTIFY_SOCKET",
"PIDFILE", "PIDFILE",
"REMOTE_ADDR", "REMOTE_ADDR",
@ -644,6 +650,11 @@ static char** sanitize_environment(char **l) {
"RUNTIME_DIRECTORY", "RUNTIME_DIRECTORY",
"SERVICE_RESULT", "SERVICE_RESULT",
"STATE_DIRECTORY", "STATE_DIRECTORY",
"SYSTEMD_EXEC_PID",
"TRIGGER_PATH",
"TRIGGER_TIMER_MONOTONIC_USEC",
"TRIGGER_TIMER_REALTIME_USEC",
"TRIGGER_UNIT",
"WATCHDOG_PID", "WATCHDOG_PID",
"WATCHDOG_USEC", "WATCHDOG_USEC",
NULL); NULL);
@ -660,13 +671,11 @@ int manager_default_environment(Manager *m) {
m->transient_environment = strv_free(m->transient_environment); m->transient_environment = strv_free(m->transient_environment);
if (MANAGER_IS_SYSTEM(m)) { if (MANAGER_IS_SYSTEM(m)) {
/* The system manager always starts with a clean /* The system manager always starts with a clean environment for its children. It does not
* environment for its children. It does not import * import the kernel's or the parents' exported variables.
* the kernel's or the parents' exported variables.
* *
* The initial passed environment is untouched to keep * The initial passed environment is untouched to keep /proc/self/environ valid; it is used
* /proc/self/environ valid; it is used for tagging * for tagging the init process inside containers. */
* the init process inside containers. */
m->transient_environment = strv_new("PATH=" DEFAULT_PATH); m->transient_environment = strv_new("PATH=" DEFAULT_PATH);
if (!m->transient_environment) if (!m->transient_environment)
return log_oom(); return log_oom();
@ -685,7 +694,6 @@ int manager_default_environment(Manager *m) {
} }
sanitize_environment(m->transient_environment); sanitize_environment(m->transient_environment);
return 0; return 0;
} }