Add an UNVEIL_USERSET flag which is set when a unveil node is added via
authorclaudio <claudio@openbsd.org>
Sun, 9 Jan 2022 10:28:07 +0000 (10:28 +0000)
committerclaudio <claudio@openbsd.org>
Sun, 9 Jan 2022 10:28:07 +0000 (10:28 +0000)
commit2abaea44e751d3c2558b628869322dd0ce33b3eb
tree0d2672730b600ab45ef233436929925186f3c4f6
parentaf97903fb555373f4af4abf3f3808148e699bb6f
Add an UNVEIL_USERSET flag which is set when a unveil node is added via
unveil(2). It is not set for nodes that are added as a result of a file
being added via unveil(2). Use this flag to test if backtracking should
be done or not. Also introduce UNVEIL_MASK which checks if any user flags
are set and is used to properly return EACCES vs ENOENT.

This fixes a problem where unveil("/", "r") & unveil("/usr/bin/id", "rx")
cause an error when read accessing "/usr/bin". It also makes sure that
unveil(path, "") will return ENOENT for any access of anything under path.

Reported by and OK semarie@
sys/kern/kern_unveil.c
sys/sys/namei.h