summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2015-12-22 15:32:45 +0000
committerpfg <pfg@FreeBSD.org>2015-12-22 15:32:45 +0000
commit74ea8096f3f6df2cd81a27b0859551835da720bf (patch)
tree7343ea248cf4f747f1ac268e8c12d6a3af636c93
parentf801f23bcf3e99dd42b6e4e1c124dae21500121f (diff)
downloadFreeBSD-src-74ea8096f3f6df2cd81a27b0859551835da720bf.zip
FreeBSD-src-74ea8096f3f6df2cd81a27b0859551835da720bf.tar.gz
cron: Check the return value of pipe(2)
Fix inspired by: OpenBSD (rev 1.56) CID: 1009830
-rw-r--r--usr.sbin/cron/cron/do_command.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.sbin/cron/cron/do_command.c b/usr.sbin/cron/cron/do_command.c
index 8dfd4f6..d570c84 100644
--- a/usr.sbin/cron/cron/do_command.c
+++ b/usr.sbin/cron/cron/do_command.c
@@ -114,7 +114,7 @@ child_process(e, u)
struct pam_conv pamc = {
.conv = openpam_nullconv,
.appdata_ptr = NULL
- };
+ }
Debug(DPROC, ("[%d] checking account with PAM\n", getpid()))
@@ -161,8 +161,10 @@ child_process(e, u)
/* create some pipes to talk to our future child
*/
- pipe(stdin_pipe); /* child's stdin */
- pipe(stdout_pipe); /* child's stdout */
+ if (pipe(stdin_pipe) != 0 || pipe(stdout_pipe) != 0) {
+ log_it("CRON", getpid(), "error", "can't pipe");
+ exit(ERROR_EXIT);
+ }
/* since we are a forked process, we can diddle the command string
* we were passed -- nobody else is going to use it again, right?
OpenPOWER on IntegriCloud