diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2014-12-27 00:46:32 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2014-12-27 00:51:54 +0200 |
commit | cb8b9461907373485acabb90bc1cad5263abc8b8 (patch) | |
tree | 63c9a28993791d8b836685a6d01c608ba604e0d3 /src/progman.c | |
parent | a1d8a2d3662cde5f1d0ec411e372c3614bb49a6d (diff) | |
download | pies-cb8b9461907373485acabb90bc1cad5263abc8b8.tar.gz pies-cb8b9461907373485acabb90bc1cad5263abc8b8.tar.bz2 |
Minor fixes.
* lib/proctitle.c (mf_proctitle_format): Check return from
vasprintf instead of checking the return pointer.
* src/inetd-bi.c: Check return values from write where reasonable.
* src/progman.c (redirect_to_file): Check return from chown.
(close_fds): Fix coredump (upper boundary was wrong).
(open_redirector, progman_dump_stats): Check return values.
* src/sysvinit.c (sysvinit_setenv): Remove unused variable.
* src/userprivs.c (str_eq, str_dispose): Remove unused functions.
* src/utmp.c: Check return values.
Diffstat (limited to 'src/progman.c')
-rw-r--r-- | src/progman.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/progman.c b/src/progman.c index c9741d5..e666535 100644 --- a/src/progman.c +++ b/src/progman.c @@ -393,7 +393,13 @@ redirect_to_file (struct prog *master, int stream) /* Fix file ownership */ if (master->v.p.comp->privs.user && (pw = getpwnam (master->v.p.comp->privs.user)) != NULL) - chown (master->v.p.comp->redir[stream].v.file, pw->pw_uid, pw->pw_gid); + { + if (chown (master->v.p.comp->redir[stream].v.file, + pw->pw_uid, pw->pw_gid)) + logmsg (LOG_ERR, "chown %s: %s", + master->v.p.comp->redir[stream].v.file, + strerror (errno)); + } return fd; } @@ -402,7 +408,7 @@ close_fds (fd_set *fdset) { int i; - for (i = getmaxfd (); i >= 0; i--) + for (i = FD_SETSIZE-1; i >= 0; i--) { if (fdset && FD_ISSET (i, fdset)) continue; @@ -441,7 +447,12 @@ open_redirector (struct prog *master, int stream) break; } - pipe (p); + if (pipe (p)) + { + logmsg (LOG_CRIT, "pipe: %s", strerror (errno)); + return -1; + } + switch (pid = fork ()) { case 0: @@ -2445,8 +2456,7 @@ progman_dump_stats (const char *filename) struct prog *prog; char *tmpfile = NULL; - asprintf (&tmpfile, "%s.%lu", filename, (unsigned long) getpid ()); - if (!tmpfile) + if (asprintf (&tmpfile, "%s.%lu", filename, (unsigned long) getpid ()) == -1) { logmsg (LOG_ERR, "%s", strerror (ENOMEM)); return; @@ -2490,6 +2500,9 @@ progman_dump_stats (const char *filename) case pies_comp_pass_fd: fbuf[fidx++] = 'P'; + + default: + break; } switch (prog->v.p.status) |