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();

Reply via email to