SOURCES (LINUX_2_6): linux-2.6-vs2.1.patch - fixed security issue ...

baggins baggins at pld-linux.org
Thu Apr 27 11:45:11 CEST 2006


Author: baggins                      Date: Thu Apr 27 09:45:11 2006 GMT
Module: SOURCES                       Tag: LINUX_2_6
---- Log message:
- fixed security issue with context capabilities

---- Files affected:
SOURCES:
   linux-2.6-vs2.1.patch (1.1.2.15 -> 1.1.2.16) 

---- Diffs:

================================================================
Index: SOURCES/linux-2.6-vs2.1.patch
diff -u SOURCES/linux-2.6-vs2.1.patch:1.1.2.15 SOURCES/linux-2.6-vs2.1.patch:1.1.2.16
--- SOURCES/linux-2.6-vs2.1.patch:1.1.2.15	Thu Apr 20 16:07:05 2006
+++ SOURCES/linux-2.6-vs2.1.patch	Thu Apr 27 11:45:05 2006
@@ -7436,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);
@@ -7496,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))
@@ -7505,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;
@@ -7514,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);
@@ -7572,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;
  	}
@@ -9083,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;
@@ -9141,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;
  	}
  
@@ -11081,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);
@@ -11711,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.
@@ -11720,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) {
@@ -11729,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);
@@ -11738,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 &
@@ -19238,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;
@@ -19279,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;
@@ -19301,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;
@@ -28395,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.15&r2=1.1.2.16&f=u



More information about the pld-cvs-commit mailing list