提交 9210f3ef 编写于 作者: T Tetsuo Handa 提交者: Xie XiuQi

net: netlink: Check address length before reading groups field

mainline inclusion
from mainline-5.1-rc6
commit d852be84770c
category: bugfix
bugzilla: 14091
CVE: NA

-------------------------------------------------

KMSAN will complain if valid address length passed to bind() is shorter
than sizeof(struct sockaddr_nl) bytes.
Signed-off-by: NTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NZhiqiang Liu <liuzhiqiang26@huawei.com>
Reviewed-by: NWenan Mao <maowenan@huawei.com>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 81d77fef
...@@ -993,7 +993,7 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr, ...@@ -993,7 +993,7 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
struct netlink_sock *nlk = nlk_sk(sk); struct netlink_sock *nlk = nlk_sk(sk);
struct sockaddr_nl *nladdr = (struct sockaddr_nl *)addr; struct sockaddr_nl *nladdr = (struct sockaddr_nl *)addr;
int err = 0; int err = 0;
unsigned long groups = nladdr->nl_groups; unsigned long groups;
bool bound; bool bound;
if (addr_len < sizeof(struct sockaddr_nl)) if (addr_len < sizeof(struct sockaddr_nl))
...@@ -1001,6 +1001,7 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr, ...@@ -1001,6 +1001,7 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr,
if (nladdr->nl_family != AF_NETLINK) if (nladdr->nl_family != AF_NETLINK)
return -EINVAL; return -EINVAL;
groups = nladdr->nl_groups;
/* Only superuser is allowed to listen multicasts */ /* Only superuser is allowed to listen multicasts */
if (groups) { if (groups) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册