diff options
author | Luca Boccassi <bluca@debian.org> | 2023-02-21 22:58:52 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-21 22:58:52 +0000 |
commit | fd4ba8a7db2ebaed05a7a9095c721efa063acb99 (patch) | |
tree | 11d903beea33219d75ea9a1fd1c135064b317b8f /src/home | |
parent | e7906abeb81a85d1783a3913ca921484bbbb30ba (diff) | |
parent | 0c2aedb451c9da0d997e46c84d399c80d7fcb61d (diff) | |
download | systemd-fd4ba8a7db2ebaed05a7a9095c721efa063acb99.tar.gz |
Merge pull request #26349 from yuwata/safe-fork-rearrange-stdio
process-util: introduce FORK_REARRANGE_STDIO
Diffstat (limited to 'src/home')
-rw-r--r-- | src/home/homed-home.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/home/homed-home.c b/src/home/homed-home.c index e6b7740600..413fcf1773 100644 --- a/src/home/homed-home.c +++ b/src/home/homed-home.c @@ -1180,8 +1180,9 @@ static int home_start_work(Home *h, const char *verb, UserRecord *hr, UserRecord return -errno; r = safe_fork_full("(sd-homework)", - (int[]) { stdin_fd, stdout_fd }, 2, - FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_DEATHSIG|FORK_LOG|FORK_REOPEN_LOG, &pid); + (int[]) { stdin_fd, stdout_fd, STDERR_FILENO }, + NULL, 0, + FORK_RESET_SIGNALS|FORK_CLOSE_ALL_FDS|FORK_DEATHSIG|FORK_REARRANGE_STDIO|FORK_LOG|FORK_REOPEN_LOG, &pid); if (r < 0) return r; if (r == 0) { @@ -1226,13 +1227,6 @@ static int home_start_work(Home *h, const char *verb, UserRecord *hr, UserRecord if (r < 0) log_warning_errno(r, "Failed to update $SYSTEMD_EXEC_PID, ignoring: %m"); - r = rearrange_stdio(TAKE_FD(stdin_fd), TAKE_FD(stdout_fd), STDERR_FILENO); /* fds are invalidated by rearrange_stdio() even on failure */ - if (r < 0) { - log_error_errno(r, "Failed to rearrange stdin/stdout/stderr: %m"); - _exit(EXIT_FAILURE); - } - - /* Allow overriding the homework path via an environment variable, to make debugging * easier. */ homework = getenv("SYSTEMD_HOMEWORK_PATH") ?: SYSTEMD_HOMEWORK_PATH; |