[NETLINK] Check for correct bind parameters Before this change it was possible to pass less than sockaddr_nl bytes, which might lead to arbitrary data being accessed in netlink_bind(). Take two. Signed-off-by: Holger Eitzenberger --- commit 3155c34167184c31afeac2a061c0e0b9cd401d56 tree b5efe4234a5835e823b6b024f8d96e56f4abfd18 parent f695baf2df9e0413d3521661070103711545207a author Holger Eitzenberger Tue, 18 Sep 2007 23:10:11 +0200 committer Holger Eitzenberger Tue, 18 Sep 2007 23:10:11 +0200 net/netlink/af_netlink.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index 5681ce3..5aaa9a7 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -598,6 +598,9 @@ static int netlink_bind(struct socket *sock, struct sockaddr *addr, int addr_len struct sockaddr_nl *nladdr = (struct sockaddr_nl *)addr; int err; + if (addr_len < sizeof(struct sockaddr_nl)) + return -EINVAL; + if (nladdr->nl_family != AF_NETLINK) return -EINVAL;