diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2011-01-07 03:15:05 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-09 16:25:03 -0800 |
commit | 0ab03c2b1478f2438d2c80204f7fef65b1bca9cf (patch) | |
tree | a130abc7a3cc2d5c326b1bbdad80c06e741db3fd /net/core | |
parent | dba5a68ae147d0672d4b9259f3ece37777f8b2fa (diff) | |
download | op-kernel-dev-0ab03c2b1478f2438d2c80204f7fef65b1bca9cf.zip op-kernel-dev-0ab03c2b1478f2438d2c80204f7fef65b1bca9cf.tar.gz |
netlink: test for all flags of the NLM_F_DUMP composite
Due to NLM_F_DUMP is composed of two bits, NLM_F_ROOT | NLM_F_MATCH,
when doing "if (x & NLM_F_DUMP)", it tests for _either_ of the bits
being set. Because NLM_F_MATCH's value overlaps with NLM_F_EXCL,
non-dump requests with NLM_F_EXCL set are mistaken as dump requests.
Substitute the condition to test for _all_ bits being set.
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/rtnetlink.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 750db57..a5f7535 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -1820,7 +1820,7 @@ static int rtnetlink_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) if (kind != 2 && security_netlink_recv(skb, CAP_NET_ADMIN)) return -EPERM; - if (kind == 2 && nlh->nlmsg_flags&NLM_F_DUMP) { + if (kind == 2 && (nlh->nlmsg_flags & NLM_F_DUMP) == NLM_F_DUMP) { struct sock *rtnl; rtnl_dumpit_func dumpit; |