file: avoid closing stdio descriptors in rpc_file_exec_run

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2018-12-21 09:30:19 +01:00
parent 67118a6b33
commit ffaa6132cb

17
file.c
View file

@ -590,6 +590,13 @@ rpc_file_exec_epipe_state_cb(struct ustream *s)
rpc_file_exec_reply(c, UBUS_STATUS_OK); rpc_file_exec_reply(c, UBUS_STATUS_OK);
} }
static void
rpc_fdclose(int fd)
{
if (fd > 2)
close(fd);
}
static int static int
rpc_file_exec_run(const char *cmd, rpc_file_exec_run(const char *cmd,
const struct blob_attr *arg, const struct blob_attr *env, const struct blob_attr *arg, const struct blob_attr *env,
@ -639,11 +646,11 @@ rpc_file_exec_run(const char *cmd,
dup2(opipe[1], 1); dup2(opipe[1], 1);
dup2(epipe[1], 2); dup2(epipe[1], 2);
close(devnull); rpc_fdclose(devnull);
close(opipe[0]); rpc_fdclose(opipe[0]);
close(opipe[1]); rpc_fdclose(opipe[1]);
close(epipe[0]); rpc_fdclose(epipe[0]);
close(epipe[1]); rpc_fdclose(epipe[1]);
arglen = 2; arglen = 2;
args = malloc(sizeof(char *) * arglen); args = malloc(sizeof(char *) * arglen);