summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorAndrew Lutomirski <luto@amacapital.net>2014-04-16 21:41:34 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-05-30 21:52:15 -0700
commiteac664d2832178c1d3a5e7560a26c10001717b77 (patch)
tree55cd18545fc8724151d52779cec90822fcbe63b4 /net
parente5eae4a0511241959498b180fa0df0d4f1b11b9c (diff)
downloadlinux-3.10-eac664d2832178c1d3a5e7560a26c10001717b77.tar.gz
linux-3.10-eac664d2832178c1d3a5e7560a26c10001717b77.tar.bz2
linux-3.10-eac664d2832178c1d3a5e7560a26c10001717b77.zip
net: Fix ns_capable check in sock_diag_put_filterinfo
[ Upstream commit 78541c1dc60b65ecfce5a6a096fc260219d6784e ] The caller needs capabilities on the namespace being queried, not on their own namespace. This is a security bug, although it likely has only a minor impact. Cc: stable@vger.kernel.org Signed-off-by: Andy Lutomirski <luto@amacapital.net> Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r--net/core/sock_diag.c4
-rw-r--r--net/packet/diag.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c
index a0e9cf6379d..6a7fae22863 100644
--- a/net/core/sock_diag.c
+++ b/net/core/sock_diag.c
@@ -49,7 +49,7 @@ int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attrtype)
}
EXPORT_SYMBOL_GPL(sock_diag_put_meminfo);
-int sock_diag_put_filterinfo(struct user_namespace *user_ns, struct sock *sk,
+int sock_diag_put_filterinfo(struct sock *sk,
struct sk_buff *skb, int attrtype)
{
struct nlattr *attr;
@@ -57,7 +57,7 @@ int sock_diag_put_filterinfo(struct user_namespace *user_ns, struct sock *sk,
unsigned int len;
int err = 0;
- if (!ns_capable(user_ns, CAP_NET_ADMIN)) {
+ if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) {
nla_reserve(skb, attrtype, 0);
return 0;
}
diff --git a/net/packet/diag.c b/net/packet/diag.c
index a9584a2f6d6..ec8b6e8a80b 100644
--- a/net/packet/diag.c
+++ b/net/packet/diag.c
@@ -171,7 +171,7 @@ static int sk_diag_fill(struct sock *sk, struct sk_buff *skb,
goto out_nlmsg_trim;
if ((req->pdiag_show & PACKET_SHOW_FILTER) &&
- sock_diag_put_filterinfo(user_ns, sk, skb, PACKET_DIAG_FILTER))
+ sock_diag_put_filterinfo(sk, skb, PACKET_DIAG_FILTER))
goto out_nlmsg_trim;
return nlmsg_end(skb, nlh);