Module Name: src Committed By: hannken Date: Wed Nov 28 09:58:58 UTC 2018
Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c src/tests/fs/vfs: t_unpriv.c Log Message: Add missing access check for REMOVE into zfs_netbsd_lookup(). PR kern/47656 test zfs_dirperms. To generate a diff of this commit: cvs rdiff -u -r1.33 -r1.34 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c cvs rdiff -u -r1.14 -r1.15 src/tests/fs/vfs/t_unpriv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.33 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.34 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.33 Wed Nov 28 09:57:59 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Wed Nov 28 09:58:58 2018 @@ -5128,8 +5128,15 @@ zfs_netbsd_lookup(void *v) error = EJUSTRETURN; break; } - /* FALLTHROUGH */ + break; case DELETE: + if (error == 0) { + error = VOP_ACCESS(dvp, VWRITE, cnp->cn_cred); + if (error) { + VN_RELE(*vpp); + *vpp = NULL; + } + } break; } } Index: src/tests/fs/vfs/t_unpriv.c diff -u src/tests/fs/vfs/t_unpriv.c:1.14 src/tests/fs/vfs/t_unpriv.c:1.15 --- src/tests/fs/vfs/t_unpriv.c:1.14 Wed Nov 28 09:57:59 2018 +++ src/tests/fs/vfs/t_unpriv.c Wed Nov 28 09:58:58 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: t_unpriv.c,v 1.14 2018/11/28 09:57:59 hannken Exp $ */ +/* $NetBSD: t_unpriv.c,v 1.15 2018/11/28 09:58:58 hannken Exp $ */ /*- * Copyright (c) 2011 The NetBSD Foundation, Inc. @@ -94,8 +94,6 @@ dirperms(const atf_tc_t *tc, const char rump_pub_lwproc_rfork(RUMP_RFCFDG); if (rump_sys_setuid(1) == -1) atf_tc_fail_errno("setuid"); - if (FSTYPE_ZFS(tc)) - atf_tc_expect_fail("PR kern/47656: Test known to be broken"); if (rump_sys_open(name, O_RDWR|O_CREAT, 0666) != -1 || errno != EACCES) atf_tc_fail_errno("open"); rump_pub_lwproc_releaselwp();