file: patch process stdin to /dev/null
[oweals/rpcd.git] / file.c
diff --git a/file.c b/file.c
index 09b4afd6e97cc5125bfca9beed2f66bc2193119a..23deb73e2470f6ccbe3f074db79a9930e200a324 100644 (file)
--- 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]);