diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-12-21 09:09:55 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-12-21 09:18:23 +0100 |
commit | 67118a6b334cd50c9f39a0c04506befd49bf592a (patch) | |
tree | 4423b97ef1fa1e2594b909c6bfad8ad8f3912397 | |
parent | 2e8106ac5683be723b7f4e4ee522678b60b5ab50 (diff) | |
download | rpcd-67118a6b334cd50c9f39a0c04506befd49bf592a.tar.gz |
file: patch process stdin to /dev/null
This prevents broken pipe errors in executed child processes that
attempt to access stdin.
Suggested-by: Vytautas Virvičius <vy.virvicius@gmail.com>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | file.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -597,6 +597,7 @@ rpc_file_exec_run(const char *cmd, { pid_t pid; + int devnull; int opipe[2]; int epipe[2]; @@ -629,10 +630,16 @@ rpc_file_exec_run(const char *cmd, case 0: uloop_done(); + devnull = open("/dev/null", O_RDWR); + + if (devnull == -1) + return UBUS_STATUS_UNKNOWN_ERROR; + + dup2(devnull, 0); dup2(opipe[1], 1); dup2(epipe[1], 2); - close(0); + close(devnull); close(opipe[0]); close(opipe[1]); close(epipe[0]); |