X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fexecute.c;h=066efd6fdf1c41ec0b90c51dfae13cbe212de7fd;hb=cedc611207b6a14cdbaf1d73e12b62ee55cc53de;hp=6e76bd5b504922141e6de5961fce0ae19a09a562;hpb=418b9be50018303cde79b423d4701b7fd86ddbdc;p=elogind.git diff --git a/src/core/execute.c b/src/core/execute.c index 6e76bd5b5..066efd6fd 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -333,7 +333,7 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty i == EXEC_INPUT_TTY_FAIL, i == EXEC_INPUT_TTY_FORCE, false, - (usec_t) -1); + USEC_INFINITY); if (fd < 0) return fd; @@ -1301,7 +1301,6 @@ int exec_spawn(ExecCommand *command, int dont_close[n_fds + 3]; uid_t uid = (uid_t) -1; gid_t gid = (gid_t) -1; - sigset_t ss; int i, err; /* child */ @@ -1319,9 +1318,8 @@ int exec_spawn(ExecCommand *command, if (context->ignore_sigpipe) ignore_signals(SIGPIPE, -1); - assert_se(sigemptyset(&ss) == 0); - if (sigprocmask(SIG_SETMASK, &ss, NULL) < 0) { - err = -errno; + err = reset_signal_mask(); + if (err < 0) { r = EXIT_SIGNAL_MASK; goto fail_child; } @@ -1464,7 +1462,7 @@ int exec_spawn(ExecCommand *command, goto fail_child; } - if (context->timer_slack_nsec != (nsec_t) -1) + if (context->timer_slack_nsec != NSEC_INFINITY) if (prctl(PR_SET_TIMERSLACK, context->timer_slack_nsec) < 0) { err = -errno; r = EXIT_TIMERSLACK; @@ -1635,7 +1633,9 @@ int exec_spawn(ExecCommand *command, } /* We repeat the fd closing here, to make sure that - * nothing is leaked from the PAM modules */ + * nothing is leaked from the PAM modules. Note that + * we are more aggressive this time since socket_fd + * and the netns fds we don#t need anymore. */ err = close_all_fds(fds, n_fds); if (err >= 0) err = shift_fds(fds, n_fds); @@ -1833,7 +1833,7 @@ void exec_context_init(ExecContext *c) { c->syslog_priority = LOG_DAEMON|LOG_INFO; c->syslog_level_prefix = true; c->ignore_sigpipe = true; - c->timer_slack_nsec = (nsec_t) -1; + c->timer_slack_nsec = NSEC_INFINITY; c->personality = 0xffffffffUL; c->runtime_directory_mode = 0755; } @@ -2177,7 +2177,7 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) { fputs("\n", f); } - if (c->timer_slack_nsec != (nsec_t) -1) + if (c->timer_slack_nsec != NSEC_INFINITY) fprintf(f, "%sTimerSlackNSec: "NSEC_FMT "\n", prefix, c->timer_slack_nsec); fprintf(f, @@ -2398,12 +2398,11 @@ void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix) { assert(s); assert(f); - if (!prefix) - prefix = ""; - if (s->pid <= 0) return; + prefix = strempty(prefix); + fprintf(f, "%sPID: "PID_FMT"\n", prefix, s->pid); @@ -2463,21 +2462,16 @@ char *exec_command_line(char **argv) { } void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix) { - _cleanup_free_ char *p2 = NULL; - const char *prefix2; - _cleanup_free_ char *cmd = NULL; + const char *prefix2; assert(c); assert(f); - if (!prefix) - prefix = ""; - p2 = strappend(prefix, "\t"); - prefix2 = p2 ? p2 : prefix; + prefix = strempty(prefix); + prefix2 = strappenda(prefix, "\t"); cmd = exec_command_line(c->argv); - fprintf(f, "%sCommand Line: %s\n", prefix, cmd ? cmd : strerror(ENOMEM)); @@ -2488,8 +2482,7 @@ void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix) { void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix) { assert(f); - if (!prefix) - prefix = ""; + prefix = strempty(prefix); LIST_FOREACH(command, c, c) exec_command_dump(c, f, prefix);