freebsd-dev/contrib/netbsd-tests
Kyle Evans 6a5abb1ee5 Provide O_SEARCH
O_SEARCH is defined by POSIX [0] to open a directory for searching, skipping
permissions checks on the directory itself after the initial open(). This is
close to the semantics we've historically applied for O_EXEC on a directory,
which is UB according to POSIX. Conveniently, O_SEARCH on a file is also
explicitly undefined behavior according to POSIX, so O_EXEC would be a fine
choice. The spec goes on to state that O_SEARCH and O_EXEC need not be
distinct values, but they're not defined to be the same value.

This was pointed out as an incompatibility with other systems that had made
its way into libarchive, which had assumed that O_EXEC was an alias for
O_SEARCH.

This defines compatibility O_SEARCH/FSEARCH (equivalent to O_EXEC and FEXEC
respectively) and expands our UB for O_EXEC on a directory. O_EXEC on a
directory is checked in vn_open_vnode already, so for completeness we add a
NOEXECCHECK when O_SEARCH has been specified on the top-level fd and do not
re-check that when descending in namei.

[0] https://pubs.opengroup.org/onlinepubs/9699919799/

Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D23247
2020-02-02 16:34:57 +00:00
..
bin Add testcases for cat -b 2017-06-06 21:50:00 +00:00
crypto Upgrade NetBSD tests to 01.11.2017_23.20 snapshot 2017-01-13 03:33:57 +00:00
dev Merge in changes from ^/vendor/NetBSD/tests/dist@r313245 2017-02-04 18:20:07 +00:00
fs Fix tmpfs detection in the sys/fs/tmpfs tests 2018-07-21 23:54:40 +00:00
games Restore pathing for factor(1), which unnecessarily diverged in r278616 2016-12-03 03:13:32 +00:00
include Merge content currently under test from ^/vendor/NetBSD/tests/dist/@r312123 2017-01-14 06:49:17 +00:00
ipf Checkpoint initial integration work 2016-08-12 08:50:05 +00:00
kernel Implement shmat(2) flag SHM_REMAP. 2019-01-16 05:15:57 +00:00
lib Provide O_SEARCH 2020-02-02 16:34:57 +00:00
libexec/ld.elf_so Merge content currently under test from ^/vendor/NetBSD/tests/dist/@r312123 2017-01-14 06:49:17 +00:00
modules Merge content currently under test from ^/vendor/NetBSD/tests/dist/@r312123 2017-01-14 06:49:17 +00:00
net Merge in changes from ^/vendor/NetBSD/tests/dist@r313245 2017-02-04 18:20:07 +00:00
rump Merge content currently under test from ^/vendor/NetBSD/tests/dist/@r312123 2017-01-14 06:49:17 +00:00
sbin Checkpoint initial integration work 2016-08-12 08:50:05 +00:00
share Checkpoint initial integration work 2016-08-12 08:50:05 +00:00
sys Merge content currently under test from ^/vendor/NetBSD/tests/dist/@r312123 2017-01-14 06:49:17 +00:00
usr.bin Re-apply fixed r354847 2019-11-20 19:43:34 +00:00
usr.sbin mtree: Fix -f -f not considering type changes. 2019-09-12 18:44:48 +00:00
FREEBSD-upgrade
h_macros.h Upgrade NetBSD tests to 01.11.2017_23.20 snapshot 2017-01-13 03:33:57 +00:00