PERFORCE change 113319 for review

Todd Miller millert at FreeBSD.org
Mon Jan 22 15:11:41 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=113319

Change 113319 by millert at millert_macbook on 2007/01/22 15:10:57

	- Add entry points for vnode_check_{list, delete}extattr
	- Add a comment to vnode_check_set, it doesn't look complete

Affected files ...

.. //depot/projects/trustedbsd/sedarwin8/policies/sedarwin/sedarwin/sebsd.c#58 edit

Differences ...

==== //depot/projects/trustedbsd/sedarwin8/policies/sedarwin/sedarwin/sebsd.c#58 (text+ko) ====

@@ -2086,6 +2086,34 @@
 	return (vnode_has_perm(cred, vp, NULL, FILE__GETATTR));
 }
 
+static int
+sebsd_vnode_check_listextattr(struct ucred *cred, struct vnode *vp,
+    struct label *label)
+{
+
+	return (vnode_has_perm(cred, vp, NULL, FILE__GETATTR));
+}
+
+static int
+sebsd_vnode_check_deleteextattr(struct ucred *cred, struct vnode *vp,
+    struct label *label, const char *name)
+{
+
+	/*
+	 * Our policy labels may not be removed.  
+	 * Labels may be changed, but all files must be labeled.
+	 */
+	if (bcmp(name, SEBSD_MAC_EXTATTR_NAME,
+	    sizeof(SEBSD_MAC_EXTATTR_NAME)) == 0)
+		return (EPERM);
+
+	/* 
+	 * Otherwise, it's not a recognized attribute and we do as
+	 * SELinux does and check ordinary setattr permissions.
+	 */
+	return (vnode_has_perm(cred, vp, NULL, FILE__SETATTR));
+}
+
 #if defined(FILE__POLL) && defined(FILE__GETATTR)
 static int
 sebsd_vnode_check_kqfilter(struct ucred *cred, struct ucred *file_cred,
@@ -2386,6 +2414,14 @@
     struct label *label, const char *name, struct uio *uio)
 {
 
+	/*
+	 * XXX - This doesn't look like we're checking enough 
+	 * update_extattr doesn't actually check any permissions,
+	 * it's called too late.
+	 *
+	 * If the 'name' belongs to our policy, we should make sure
+	 * the new value is valid and permitted.
+	 */
 	return (vnode_has_perm(cred, vp, NULL, FILE__SETATTR));
 }
 
@@ -3513,6 +3549,7 @@
 	.mpo_vnode_check_chdir = sebsd_vnode_check_chdir,
 	.mpo_vnode_check_chroot = sebsd_vnode_check_chroot,
 	.mpo_vnode_check_create = sebsd_vnode_check_create,
+	.mpo_vnode_check_deleteextattr = sebsd_vnode_check_deleteextattr,
 	.mpo_vnode_check_exchangedata = sebsd_vnode_check_exchangedata,
 	.mpo_vnode_check_exec = sebsd_vnode_check_exec,
 	.mpo_vnode_check_getattrlist = sebsd_vnode_check_getattrlist,
@@ -3520,6 +3557,7 @@
 	.mpo_vnode_check_ioctl = sebsd_vnode_check_ioctl,
 	.mpo_vnode_check_label_update = sebsd_vnode_check_label_update,
 	.mpo_vnode_check_link = sebsd_vnode_check_link,
+	.mpo_vnode_check_listextattr = sebsd_vnode_check_listextattr,
 	.mpo_vnode_check_lookup = sebsd_vnode_check_lookup,
 	.mpo_vnode_check_open = sebsd_vnode_check_open,
 	.mpo_vnode_check_read = sebsd_vnode_check_read,


More information about the trustedbsd-cvs mailing list