freebsd-dev/contrib
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
..
amd amd: add deprecation warning on program startup 2019-11-22 15:06:07 +00:00
apr contrib/apr: Rip out bogus [CS]PRNG implementation 2020-01-30 18:12:41 +00:00
apr-util
atf
bearssl Add libbearssl 2019-02-26 05:59:22 +00:00
binutils Fix the following -Werror warning from clang 10.0.0 in binutils: 2020-01-28 20:09:23 +00:00
blacklist blacklistd.conf.5: pluralization correction 2019-11-06 17:01:35 +00:00
bmake retire BSD_CRTBEGIN option 2020-01-31 18:04:04 +00:00
bsnmp bsnmpd(1): Replace dubious srandomdev+random(3) with arc4random(3) 2019-12-13 05:13:25 +00:00
byacc
bzip2 Upgrade to Bzip2 version 1.0.8. 2019-08-11 06:26:03 +00:00
capsicum-test Integrate capsicum-test into the FreeBSD test suite 2019-04-01 21:24:50 +00:00
com_err
cortex-strings
dialog Update libdialog to 1.3-20180621 2018-10-20 20:49:46 +00:00
diff
dma Make dma(8) buildable. 2018-09-19 06:42:05 +00:00
dtc
ee
elftoolchain Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00
expat MFV r355071: libbsdxml (expat) 2.2.9. 2019-11-25 07:48:16 +00:00
file MFV r354798: 2019-11-18 04:22:04 +00:00
flex Terminate filter_create_ext() args with NULL, not 0. 2018-08-08 22:45:30 +00:00
gcc powerpc: Transition to Secure-PLT, like most other OSs 2019-06-25 00:40:44 +00:00
gcclibs
gdb [PPC64] Fix GDB sigtramp detection 2019-11-01 11:28:43 +00:00
gdtoa
googletest googletest: pick from upstream: Don't allow signed/unsigned wchar_t in gcc 9 and later 2019-12-21 02:44:50 +00:00
gperf
hyperv/tools
ipfilter Fix a typo (upto --> up to) and reword to improve word flow. 2019-12-02 20:39:40 +00:00
jemalloc jemalloc: pick from upstream: Fix GCC-9.1 warning with macro GET_ARG_NUMERIC 2019-12-21 02:44:38 +00:00
ldns Regenerate: remove GOST, enable DANE-TA now that we have OpenSSL 1.1.1. 2018-10-11 08:14:31 +00:00
ldns-host
less MFV r349535: less v551. 2019-06-29 18:41:40 +00:00
libarchive MFV r356415 2020-01-06 13:21:10 +00:00
libbegemot
libc-pwcache
libc-vis
libcxxrt Include <stdint.h> in unwind-arm.h, since it uses uint32_t and uint64_t 2019-09-13 21:00:19 +00:00
libdivsufsort
libedit Fix arm and aarch64 builds of libedit after r352275 2019-09-14 21:49:42 +00:00
libevent libevent: eliminate in-tree usage of arc4random_addrandom 2018-09-25 17:41:48 +00:00
libexecinfo Sync up with NetBSD libexecinfo changes 2014-2019 2019-10-26 06:59:59 +00:00
libgnuregex
libpcap MFV r355890: 2019-12-21 21:05:53 +00:00
libstdc++ libstdc++: remove gets 2019-09-01 16:41:24 +00:00
libucl
libxo Import libxo-1.4.0: 2020-01-25 21:16:45 +00:00
llvm-project Prefer upstream RISC-V additions in libunwind instead of ours, as these 2020-01-28 18:04:17 +00:00
lua MFV r337586: lua: Update to 5.3.5 2018-08-14 18:58:01 +00:00
mandoc Update mandoc to cvs snapshot 2019-07-23 2019-07-26 10:00:33 +00:00
mknod
mtree mtree -O: Fix not descending on hash collisions 2019-09-12 20:46:46 +00:00
ncurses
netbsd-tests Provide O_SEARCH 2020-02-02 16:34:57 +00:00
netcat Add -M option to nc(1), which makes it print the TCP connection 2019-12-14 10:53:52 +00:00
ngatm
ntp Disable ntpd stack gap. When ASLR with STACK GAP != 0 ntpd suffers SIGSEGV. 2019-11-15 16:34:35 +00:00
nvi vi.1: Fix a typo 2019-12-09 17:58:22 +00:00
ofed Add ConnectX-6 DX HCA ID to libmlx5. 2019-05-08 11:04:09 +00:00
one-true-awk Another partial revert of r301289. 2019-06-03 05:25:22 +00:00
openbsm auditd(8): fix long-standing uninitialized memory use bug 2019-11-28 00:46:03 +00:00
opencsd/decoder Remove a stale file left after merging. 2019-10-10 13:44:12 +00:00
openpam Upgrade to OpenPAM Tabebuia. 2019-02-25 18:41:16 +00:00
openresolv MFV 354917, 354918, 354919 2019-11-20 23:56:20 +00:00
opie
pam_modules/pam_passwdqc
pf Fix escaping, otherwise Dx gets translated as the macro for DragonFly. 2018-08-11 00:08:59 +00:00
pjdfstest
pnpinfo
processor-trace Update Intel Processor Trace decoder library. 2019-10-10 12:46:34 +00:00
sendmail Fix various -Wpointer-compare warnings 2019-10-08 21:14:09 +00:00
serf MFV r339226 (peter): Record merge of serf-1.3.9. 2018-10-08 15:16:04 +00:00
smbfs mount_smbfs: Issue a warning when .nsmbrc section name contains lowercase characters. 2020-01-03 12:54:14 +00:00
sqlite3 MFV r357163: 2020-01-28 13:13:41 +00:00
subversion
tcp_wrappers Remove a duplicate global (rfc931_timeout). 2019-07-17 23:43:14 +00:00
tcpdump MFV r353143 (phillip): 2019-12-21 21:02:50 +00:00
tcsh Update tcsh to git revision 83c5be0 bringing in a number of bug fixes. 2019-10-21 21:21:34 +00:00
telnet libtelnet: Replace bogus use of srandomdev + random to generate "public key pair" 2019-12-13 05:42:57 +00:00
tnftp Switch the default pager for most commands to less 2018-08-08 19:24:20 +00:00
traceroute The variable names in the description of the port number usage is 2019-06-20 12:38:41 +00:00
tzcode Remove no longer relevant comment, as suggested by imp@. 2018-10-30 15:44:16 +00:00
tzdata Import tzdata 2019c 2019-09-12 00:19:16 +00:00
unbound Unbound's config.h is manually maintained, using a ./configure produced 2020-01-13 06:55:31 +00:00
unvis
vis
wpa MFV r346563: 2019-08-22 18:52:30 +00:00
xz Clamp tuklib_physmem() return value to SIZE_T_MAX. 2019-01-06 23:59:04 +00:00