svn commit: r357461 - head/sys/kern
Kyle Evans
kevans at FreeBSD.org
Mon Feb 3 18:59:08 UTC 2020
Author: kevans
Date: Mon Feb 3 18:59:07 2020
New Revision: 357461
URL: https://svnweb.freebsd.org/changeset/base/357461
Log:
namei: preserve errors from fget_cap_locked
Most notably, we want to make sure we don't clobber any capabilities-related
errors. This is a regression from r357412 (O_SEARCH) that was picked up by
the capsicum tests.
PR: 243839
Reviewed by: kib (committed form recommended by)
Tested by: lwhsu
Differential Revision: https://reviews.freebsd.org/D23479
Modified:
head/sys/kern/vfs_lookup.c
Modified: head/sys/kern/vfs_lookup.c
==============================================================================
--- head/sys/kern/vfs_lookup.c Mon Feb 3 18:23:50 2020 (r357460)
+++ head/sys/kern/vfs_lookup.c Mon Feb 3 18:59:07 2020 (r357461)
@@ -452,8 +452,15 @@ namei(struct nameidata *ndp)
*/
error = fget_cap_locked(fdp, ndp->ni_dirfd, &rights,
&dfp, &ndp->ni_filecaps);
- if (error != 0 || dfp->f_ops == &badfileops ||
- dfp->f_vnode == NULL) {
+ if (error != 0) {
+ /*
+ * Preserve the error; it should either be EBADF
+ * or capability-related, both of which can be
+ * safely returned to the caller.
+ */
+ } else if (dfp->f_ops == &badfileops) {
+ error = EBADF;
+ } else if (dfp->f_vnode == NULL) {
error = ENOTDIR;
} else {
dp = dfp->f_vnode;
More information about the svn-src-head
mailing list