of the /dev/hpet and /dev/hv_tsc devices, to not leak internal libc filedescriptors on exec.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
BTW, there are a couple of _opens() in the locale code which should use O_CLOEXEC as well:
diff --git a/lib/libc/locale/collate.c b/lib/libc/locale/collate.c index c992d2299ab7..7afb2043e6a4 100644 --- a/lib/libc/locale/collate.c +++ b/lib/libc/locale/collate.c @@ -131,7 +131,7 @@ __collate_load_tables_l(const char *encoding, struct xlocale_collate *table) if (asprintf(&buf, "%s/%s/LC_COLLATE", _PathLocale, encoding) == -1) return (_LDP_ERROR); - if ((fd = _open(buf, O_RDONLY)) < 0) { + if ((fd = _open(buf, O_RDONLY | O_CLOEXEC)) < 0) { free(buf); return (_LDP_ERROR); } diff --git a/lib/libc/locale/rune.c b/lib/libc/locale/rune.c index b7334636f654..ce2095763eba 100644 --- a/lib/libc/locale/rune.c +++ b/lib/libc/locale/rune.c @@ -74,7 +74,7 @@ _Read_RuneMagi(const char *fname) int runetype_ext_len = 0; int fd; - if ((fd = _open(fname, O_RDONLY)) < 0) { + if ((fd = _open(fname, O_RDONLY | O_CLOEXEC)) < 0) { errno = EINVAL; return (NULL); }