diff options
author | наб <[email protected]> | 2021-04-08 22:17:38 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2021-04-14 13:23:07 -0700 |
commit | 2453d0263d1c2169c0f2671b900dde976745af20 (patch) | |
tree | e37a8848718c0381c8fe4071b38971564a2f11eb /lib/libzfs/libzfs_crypto.c | |
parent | ab88e9e264c0500c2e758a16abf2f5d598f41a7c (diff) |
lib/: set O_CLOEXEC on all fds
As found by
git grep -E '(open|setmntent|pipe2?)\(' |
grep -vE '((zfs|zpool)_|fd|dl|lzc_re|pidfile_|g_)open\('
FreeBSD's pidfile_open() says nothing about the flags of the files it
opens, but we can't do anything about it anyway; the implementation does
open all files with O_CLOEXEC
Consider this output with zpool.d/media appended with
"pid=$$; (ls -l /proc/$pid/fd > /dev/tty)":
$ /sbin/zpool iostat -vc media
lrwx------ 0 -> /dev/pts/0
l-wx------ 1 -> 'pipe:[3278500]'
l-wx------ 2 -> /dev/null
lrwx------ 3 -> /dev/zfs
lr-x------ 4 -> /proc/31895/mounts
lrwx------ 5 -> /dev/zfs
lr-x------ 10 -> /usr/lib/zfs-linux/zpool.d/media
vs
$ ./zpool iostat -vc vendor,upath,iostat,media
lrwx------ 0 -> /dev/pts/0
l-wx------ 1 -> 'pipe:[3279887]'
l-wx------ 2 -> /dev/null
lr-x------ 10 -> /usr/lib/zfs-linux/zpool.d/media
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Ahelenia Ziemiańska <[email protected]>
Closes #11866
Diffstat (limited to 'lib/libzfs/libzfs_crypto.c')
-rw-r--r-- | lib/libzfs/libzfs_crypto.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/libzfs/libzfs_crypto.c b/lib/libzfs/libzfs_crypto.c index bd4d83568..773fea5cd 100644 --- a/lib/libzfs/libzfs_crypto.c +++ b/lib/libzfs/libzfs_crypto.c @@ -71,7 +71,7 @@ pkcs11_get_urandom(uint8_t *buf, size_t bytes) int rand; ssize_t bytes_read = 0; - rand = open("/dev/urandom", O_RDONLY); + rand = open("/dev/urandom", O_RDONLY | O_CLOEXEC); if (rand < 0) return (rand); @@ -468,7 +468,7 @@ get_key_material_file(libzfs_handle_t *hdl, const char *uri, if (strlen(uri) < 7) return (EINVAL); - if ((f = fopen(uri + 7, "r")) == NULL) { + if ((f = fopen(uri + 7, "re")) == NULL) { ret = errno; errno = 0; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, |