summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/sem_new.c
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2012-09-29 11:54:34 +0000
committerjilles <jilles@FreeBSD.org>2012-09-29 11:54:34 +0000
commitfba61ef227067b4f30ac71dee816dd39abee1c8e (patch)
tree89610d7c33533a1abd5218d8db331931ee9e6327 /lib/libc/gen/sem_new.c
parent576f4f1ec84faf13f14984bdf7f8f07357e3ab02 (diff)
downloadFreeBSD-src-fba61ef227067b4f30ac71dee816dd39abee1c8e.zip
FreeBSD-src-fba61ef227067b4f30ac71dee816dd39abee1c8e.tar.gz
libc: Use O_CLOEXEC for various internal file descriptors.
This fixes a race condition where another thread may fork() before CLOEXEC is set, unintentionally passing the descriptor to the child process. This commit only adds O_CLOEXEC flags to open() or openat() calls where no fcntl(fd, F_SETFD, FD_CLOEXEC) follows. The separate fcntl() call still leaves a race window so it should be fixed later.
Diffstat (limited to 'lib/libc/gen/sem_new.c')
-rw-r--r--lib/libc/gen/sem_new.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libc/gen/sem_new.c b/lib/libc/gen/sem_new.c
index b748b49..b11d547 100644
--- a/lib/libc/gen/sem_new.c
+++ b/lib/libc/gen/sem_new.c
@@ -198,7 +198,7 @@ _sem_open(const char *name, int flags, ...)
goto error;
}
- fd = _open(path, flags|O_RDWR, mode);
+ fd = _open(path, flags|O_RDWR|O_CLOEXEC, mode);
if (fd == -1)
goto error;
if (flock(fd, LOCK_EX) == -1)
OpenPOWER on IntegriCloud