linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / security / commoncap.c
index 98114af..cc05a3f 100644 (file)
@@ -7,6 +7,7 @@
  *
  */
 
+#include <linux/capability.h>
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -23,6 +24,7 @@
 #include <linux/ptrace.h>
 #include <linux/xattr.h>
 #include <linux/hugetlb.h>
+#include <linux/vs_base.h>
 
 int cap_netlink_send(struct sock *sk, struct sk_buff *skb)
 {
@@ -149,7 +151,7 @@ void cap_bprm_apply_creds (struct linux_binprm *bprm, int unsafe)
 
        if (bprm->e_uid != current->uid || bprm->e_gid != current->gid ||
            !cap_issubset (new_permitted, current->cap_permitted)) {
-               current->mm->dumpable = 0;
+               current->mm->dumpable = suid_dumpable;
 
                if (unsafe & ~LSM_UNSAFE_PTRACE_CAP) {
                        if (!capable(CAP_SETUID)) {
@@ -312,7 +314,7 @@ void cap_task_reparent_to_init (struct task_struct *p)
 int cap_syslog (int type)
 {
        if ((type != 3 && type != 10) &&
-               !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_SYSLOG))
+               !vx_capable(CAP_SYS_ADMIN, VXC_SYSLOG))
                return -EPERM;
        return 0;
 }