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>
</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>
<term><varname>$TRIGGER_UNIT</varname></term>
<term><varname>$TRIGGER_PATH</varname></term>

View file

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