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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to