X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=security%2Fcommoncap.c;h=f50fc298cf801991879bee1de094dd56671562c3;hb=b219e3ac66183fc9771b94af931fb5fd41d586ec;hp=04c12f58d656200b29c1e0c60c31e7ac62349741;hpb=603fff54420a0ccc4c3b48bfef43896fb4e33161;p=pandora-kernel.git diff --git a/security/commoncap.c b/security/commoncap.c index 04c12f58d656..f50fc298cf80 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -7,7 +7,7 @@ * */ -#include +#include #include #include #include @@ -32,9 +32,9 @@ int cap_netlink_send(struct sock *sk, struct sk_buff *skb) EXPORT_SYMBOL(cap_netlink_send); -int cap_netlink_recv(struct sk_buff *skb) +int cap_netlink_recv(struct sk_buff *skb, int cap) { - if (!cap_raised(NETLINK_CB(skb).eff_cap, CAP_NET_ADMIN)) + if (!cap_raised(NETLINK_CB(skb).eff_cap, cap)) return -EPERM; return 0; } @@ -59,8 +59,8 @@ int cap_settime(struct timespec *ts, struct timezone *tz) int cap_ptrace (struct task_struct *parent, struct task_struct *child) { /* Derived from arch/i386/kernel/ptrace.c:sys_ptrace. */ - if (!cap_issubset (child->cap_permitted, current->cap_permitted) && - !capable(CAP_SYS_PTRACE)) + if (!cap_issubset(child->cap_permitted, parent->cap_permitted) && + !__capable(parent, CAP_SYS_PTRACE)) return -EPERM; return 0; }