SOURCES (LINUX_2_6): linux-2.6-vs2.1.patch - backed out my previou...

baggins baggins at pld-linux.org
Thu Apr 27 14:41:02 CEST 2006


Author: baggins                      Date: Thu Apr 27 12:41:02 2006 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- backed out my previous "fix"
- check for euid == 0 when testing context capabilities

---- Files affected:
SOURCES:
   linux-2.6-vs2.1.patch (1.1.2.17 -> 1.1.2.18) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-vs2.1.patch
diff -u SOURCES/linux-2.6-vs2.1.patch:1.1.2.17 SOURCES/linux-2.6-vs2.1.patch:1.1.2.18
--- SOURCES/linux-2.6-vs2.1.patch:1.1.2.17	Thu Apr 27 12:48:25 2006
+++ SOURCES/linux-2.6-vs2.1.patch	Thu Apr 27 14:40:56 2006
@@ -4,7 +4,6 @@
 @@ -0,0 +1,108 @@
 +
 +debug_cvirt:
-B0rken, don't use until baggins fix it
 +
 + 2   4	"vx_map_tgid: %p/%llx: %d -> %d"
 +	"vx_rmap_tgid: %p/%llx: %d -> %d"
@@ -7437,7 +7436,7 @@
  
  	retval = -EPERM;
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SECURE_MOUNT)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT))
  		goto dput_and_out;
  
  	retval = do_umount(nd.mnt, flags);
@@ -7497,7 +7496,7 @@
  	struct super_block *sb = nd->mnt->mnt_sb;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SECURE_REMOUNT)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_REMOUNT))
  		return -EPERM;
  
  	if (!check_mnt(nd->mnt))
@@ -7506,7 +7505,7 @@
  	struct vfsmount *p;
  	int err = 0;
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SECURE_MOUNT)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT))
  		return -EPERM;
  	if (!old_name || !*old_name)
  		return -EINVAL;
@@ -7515,7 +7514,7 @@
  
  	/* we need capabilities... */
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SECURE_MOUNT)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT))
  		return -EPERM;
  
  	mnt = do_kern_mount(type, flags, name, data);
@@ -7573,7 +7572,7 @@
  		return 0;
  
 -	if (!capable(CAP_SYS_ADMIN)) {
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SECURE_MOUNT))) {
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SECURE_MOUNT)) {
  		err = -EPERM;
  		goto out;
  	}
@@ -9084,12 +9083,12 @@
  		if (((type == USRQUOTA && current->euid != id) ||
  		     (type == GRPQUOTA && !in_egroup_p(id))) &&
 -		    !capable(CAP_SYS_ADMIN))
-+		    !(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++		    !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  			return -EPERM;
  	}
  	else if (cmd != Q_GETFMT && cmd != Q_SYNC && cmd != Q_GETINFO)
 -		if (!capable(CAP_SYS_ADMIN))
-+		if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++		if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  			return -EPERM;
  
  	return 0;
@@ -9142,11 +9141,11 @@
  		if (((type == XQM_USRQUOTA && current->euid != id) ||
  		     (type == XQM_GRPQUOTA && !in_egroup_p(id))) &&
 -		     !capable(CAP_SYS_ADMIN))
-+		     !(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++		     !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  			return -EPERM;
  	} else if (cmd != Q_XGETQSTAT && cmd != Q_XQUOTASYNC) {
 -		if (!capable(CAP_SYS_ADMIN))
-+		if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++		if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  			return -EPERM;
  	}
  
@@ -11082,7 +11081,7 @@
  
 +	sb = ERR_PTR(-EPERM);
 +	if ((type->fs_flags & FS_BINARY_MOUNTDATA) &&
-+		!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_BINARY_MOUNT)))
++		!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_BINARY_MOUNT))
 +		goto out;
 +
 +	sb = ERR_PTR(-ENOMEM);
@@ -11712,7 +11711,7 @@
  	int			nculprits;
  
 -	if (!force && !capable(CAP_SYS_ADMIN))
-+	if (!force && !(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++	if (!force && !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  	/*
  	 * No file system can have quotas enabled on disk but not in core.
@@ -11721,7 +11720,7 @@
  	xfs_inode_t	*qip;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  	error = 0;
  	if (!XFS_SB_VERSION_HASQUOTA(&mp->m_sb) || flags == 0) {
@@ -11730,7 +11729,7 @@
  	__int64_t	sbflags;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  
  	flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
@@ -11739,7 +11738,7 @@
  	xfs_qcnt_t		hard, soft;
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_QUOTA_CTL)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
  		return XFS_ERROR(EPERM);
  
  	if ((newlim->d_fieldmask &
@@ -13563,7 +13562,7 @@
 +
 +#define vx_info_ccaps(v,c)	(__vx_ccaps(v) & (c))
 +
-+#define vx_ccaps(c)	vx_info_ccaps(current->vx_info,(c))
++#define vx_ccaps(c)	(vx_info_ccaps(current->vx_info,(c)) && (current->euid == 0))
 +
 +
 +#define __vx_mcaps(v)	((v) ? (v)->vx_ccaps >> 32UL : ~0 )
@@ -19239,7 +19238,7 @@
  	char tmp[__NEW_UTS_LEN];
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SET_UTSNAME)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SET_UTSNAME))
  		return -EPERM;
  	if (len < 0 || len > __NEW_UTS_LEN)
  		return -EINVAL;
@@ -19280,7 +19279,7 @@
  	char tmp[__NEW_UTS_LEN];
  
 -	if (!capable(CAP_SYS_ADMIN))
-+	if (!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SET_UTSNAME)))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SET_UTSNAME))
  		return -EPERM;
  	if (len < 0 || len > __NEW_UTS_LEN)
  		return -EINVAL;
@@ -19302,7 +19301,7 @@
  	old_rlim = current->signal->rlim + resource;
  	if ((new_rlim.rlim_max > old_rlim->rlim_max) &&
 -	    !capable(CAP_SYS_RESOURCE))
-+	    !(capable(CAP_SYS_RESOURCE) && vx_ccaps(VXC_SET_RLIMIT)))
++	    !capable(CAP_SYS_RESOURCE) && !vx_ccaps(VXC_SET_RLIMIT))
  		return -EPERM;
  	if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > NR_OPEN)
  			return -EPERM;
@@ -28396,7 +28395,7 @@
  {
 -	if ((type != 3 && type != 10) && !capable(CAP_SYS_ADMIN))
 +	if ((type != 3 && type != 10) &&
-+		!(capable(CAP_SYS_ADMIN) && vx_ccaps(VXC_SYSLOG)))
++		!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SYSLOG))
  		return -EPERM;
  	return 0;
  }
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/linux-2.6-vs2.1.patch?r1=1.1.2.17&r2=1.1.2.18&f=u



More information about the pld-cvs-commit mailing list