netlink: fix wrong subscription bitmask to group mapping in
authorPablo Neira <[email protected]>
Thu, 29 Jan 2015 09:51:53 +0000 (10:51 +0100)
committerDavid S. Miller <[email protected]>
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 <[email protected]>
Reported-by: Ivan Delalande <[email protected]>
Signed-off-by: Pablo Neira Ayuso <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
net/netlink/af_netlink.c