From: Jo-Philipp Wich Date: Fri, 21 Dec 2018 08:09:55 +0000 (+0100) Subject: file: patch process stdin to /dev/null X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=cd09c5f3512c9d6dca0c0ed7144cb1a994672454;p=oweals%2Frpcd.git 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 Signed-off-by: Jo-Philipp Wich (cherry picked from commit 67118a6b334cd50c9f39a0c04506befd49bf592a) --- diff --git a/file.c b/file.c index 09b4afd..23deb73 100644 --- a/file.c +++ b/file.c @@ -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]);