linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1] net/ipv4: add IPv4_is_multicast() check in ip_mc_leave_group().
@ 2021-01-12  8:47 wangyingjie55
  2021-01-13  2:17 ` Jakub Kicinski
  0 siblings, 1 reply; 2+ messages in thread
From: wangyingjie55 @ 2021-01-12  8:47 UTC (permalink / raw)
  To: davem, kuznet, yoshfuji, kuba, wangyingjie55; +Cc: netdev, linux-kernel

From: Yingjie Wang <wangyingjie55@126.com>

There is no IPv4_is_multicast() check added to ip_mc_leave_group()
to determine whether imr->imr_multiaddr.s_addr is a multicast address.
If not a multicast address, it may result in an error.
In some cases, the callers of ip_mc_leave_group don't check
whether it is multicast address or not such as do_ip_setsockopt().
So I suggest added the ipv4_is_multicast() check to the
ip_mc_leave_group function to prevent this from happening.

Fixes: d519aa299494 ("net/ipv4: add IPv4_is_multicast() check in ip_mc_leave_group().")
Signed-off-by: Yingjie Wang <wangyingjie55@126.com>
---
 net/ipv4/igmp.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 7b272bbed2b4..1b6f91271cfd 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -2248,6 +2248,9 @@ int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr)
 	u32 ifindex;
 	int ret = -EADDRNOTAVAIL;
 
+	if (!ipv4_is_multicast(group))
+		return -EINVAL;
+
 	ASSERT_RTNL();
 
 	in_dev = ip_mc_find_dev(net, imr);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v1] net/ipv4: add IPv4_is_multicast() check in ip_mc_leave_group().
  2021-01-12  8:47 [PATCH v1] net/ipv4: add IPv4_is_multicast() check in ip_mc_leave_group() wangyingjie55
@ 2021-01-13  2:17 ` Jakub Kicinski
  0 siblings, 0 replies; 2+ messages in thread
From: Jakub Kicinski @ 2021-01-13  2:17 UTC (permalink / raw)
  To: wangyingjie55; +Cc: davem, kuznet, yoshfuji, netdev, linux-kernel

On Tue, 12 Jan 2021 00:47:09 -0800 wangyingjie55@126.com wrote:
> From: Yingjie Wang <wangyingjie55@126.com>
> 
> There is no IPv4_is_multicast() check added to ip_mc_leave_group()
> to determine whether imr->imr_multiaddr.s_addr is a multicast address.
> If not a multicast address, it may result in an error.
> In some cases, the callers of ip_mc_leave_group don't check
> whether it is multicast address or not such as do_ip_setsockopt().
> So I suggest added the ipv4_is_multicast() check to the
> ip_mc_leave_group function to prevent this from happening.
> 
> Fixes: d519aa299494 ("net/ipv4: add IPv4_is_multicast() check in ip_mc_leave_group().")
> Signed-off-by: Yingjie Wang <wangyingjie55@126.com>

Same story with the fixes tag as on your other submission.

The fixes tag is supposed to refer to the commit which introduced 
the bug. It helps the backporters determine whether they need to
backport given fix to their trees. In case the commit which added 
the bug predates git history you can refer to the first commit in
the history.

HTH

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-01-13  2:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-12  8:47 [PATCH v1] net/ipv4: add IPv4_is_multicast() check in ip_mc_leave_group() wangyingjie55
2021-01-13  2:17 ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).