summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2018-12-21 09:30:19 +0100
committerJo-Philipp Wich <jo@mein.io>2018-12-21 09:30:19 +0100
commitffaa6132cb968fbf9532bdb9cbd0780073b9e7cd (patch)
tree5c7237ebeef87963569f3b24e88d4356bc75681d
parent67118a6b334cd50c9f39a0c04506befd49bf592a (diff)
downloadrpcd-ffaa6132cb968fbf9532bdb9cbd0780073b9e7cd.tar.gz
file: avoid closing stdio descriptors in rpc_file_exec_run
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--file.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/file.c b/file.c
index 23deb73..016f264 100644
--- a/file.c
+++ b/file.c
@@ -590,6 +590,13 @@ rpc_file_exec_epipe_state_cb(struct ustream *s)
rpc_file_exec_reply(c, UBUS_STATUS_OK);
}
+static void
+rpc_fdclose(int fd)
+{
+ if (fd > 2)
+ close(fd);
+}
+
static int
rpc_file_exec_run(const char *cmd,
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(epipe[1], 2);
- close(devnull);
- close(opipe[0]);
- close(opipe[1]);
- close(epipe[0]);
- close(epipe[1]);
+ rpc_fdclose(devnull);
+ rpc_fdclose(opipe[0]);
+ rpc_fdclose(opipe[1]);
+ rpc_fdclose(epipe[0]);
+ rpc_fdclose(epipe[1]);
arglen = 2;
args = malloc(sizeof(char *) * arglen);