netlink: Do not subscribe to non-existent groups
authorDmitry Safonov <dima@arista.com>
Fri, 27 Jul 2018 15:54:44 +0000 (16:54 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Jul 2018 19:50:19 +0000 (12:50 -0700)
Make ABI more strict about subscribing to group > ngroups.
Code doesn't check for that and it looks bogus.
(one can subscribe to non-existing group)
Still, it's possible to bind() to all possible groups with (-1)

Cc: "David S. Miller" <davem@davemloft.net>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Cc: netdev@vger.kernel.org
Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/netlink/af_netlink.c

index 393573a99a5a34d3ebaad3a71b36293b6c2fb19f..ac805caed2e2c50efc732c2faeddc52c06f0ef48 100644 (file)
@@ -1008,6 +1008,7 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
                if (err)
                        return err;
        }
+       groups &= (1UL << nlk->ngroups) - 1;
 
        bound = nlk->bound;
        if (bound) {