From 4a6fb6768aada05e456b2e8cbbcf5660637564ce Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 2 Apr 2012 19:04:02 +0100 Subject: libfuse: use O_CLOEXEC flag when opening /dev/fuse device --- lib/mount.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'lib/mount.c') diff --git a/lib/mount.c b/lib/mount.c index 01f64da..4f74841 100644 --- a/lib/mount.c +++ b/lib/mount.c @@ -406,6 +406,10 @@ static int fuse_mount_fusermount(const char *mountpoint, struct mount_opts *mo, return rv; } +#ifndef O_CLOEXEC +#define O_CLOEXEC 0 +#endif + static int fuse_mount_sys(const char *mnt, struct mount_opts *mo, const char *mnt_opts) { @@ -442,7 +446,7 @@ static int fuse_mount_sys(const char *mnt, struct mount_opts *mo, return -2; } - fd = open(devname, O_RDWR); + fd = open(devname, O_RDWR | O_CLOEXEC); if (fd == -1) { if (errno == ENODEV || errno == ENOENT) fprintf(stderr, "fuse: device not found, try 'modprobe fuse' first\n"); @@ -451,6 +455,8 @@ static int fuse_mount_sys(const char *mnt, struct mount_opts *mo, devname, strerror(errno)); return -1; } + if (!O_CLOEXEC) + fcntl(fd, F_SETFD, FD_CLOEXEC); snprintf(tmp, sizeof(tmp), "fd=%i,rootmode=%o,user_id=%i,group_id=%i", fd, stbuf.st_mode & S_IFMT, getuid(), getgid()); -- cgit v1.2.3