netlink: fix wrong subscription bitmask to group mapping in
authorPablo Neira <pablo@netfilter.org>
Thu, 29 Jan 2015 09:51:53 +0000 (10:51 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 31 Jan 2015 01:43:47 +0000 (17:43 -0800)
commit8b7c36d810c61ab16997f4387fc16291410700f8
treef8279a3912807e9cc53eea82eef57bd8b8c4375a
parent3cdaa5be9e81a914e633a6be7b7d2ef75b528562
netlink: fix wrong subscription bitmask to group mapping in

The subscription bitmask passed via struct sockaddr_nl is converted to
the group number when calling the netlink_bind() and netlink_unbind()
callbacks.

The conversion is however incorrect since bitmask (1 << 0) needs to be
mapped to group number 1. Note that you cannot specify the group number 0
(usually known as _NONE) from setsockopt() using NETLINK_ADD_MEMBERSHIP
since this is rejected through -EINVAL.

This problem became noticeable since 97840cb ("netfilter: nfnetlink:
fix insufficient validation in nfnetlink_bind") when binding to bitmask
(1 << 0) in ctnetlink.

Reported-by: Andre Tomt <andre@tomt.net>
Reported-by: Ivan Delalande <colona@arista.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c