svn commit: r363841 - head/sys/netinet6

Mark Johnston markj at FreeBSD.org
Tue Aug 4 15:00:03 UTC 2020


Author: markj
Date: Tue Aug  4 15:00:02 2020
New Revision: 363841
URL: https://svnweb.freebsd.org/changeset/base/363841

Log:
  Remove an incorrect assertion from in6p_lookup_mcast_ifp().
  
  The socket may be bound to an IPv4-mapped IPv6 address.  However, the
  inp address is not relevant to the JOIN_GROUP or LEAVE_GROUP operations.
  
  While here remove an unnecessary check for inp == NULL.
  
  Reported by:	syzbot+d01ab3d5e6c1516a393c at syzkaller.appspotmail.com
  Reviewed by:	hselasky
  MFC after:	1 week
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D25888

Modified:
  head/sys/netinet6/in6_mcast.c

Modified: head/sys/netinet6/in6_mcast.c
==============================================================================
--- head/sys/netinet6/in6_mcast.c	Tue Aug  4 14:59:43 2020	(r363840)
+++ head/sys/netinet6/in6_mcast.c	Tue Aug  4 15:00:02 2020	(r363841)
@@ -1817,31 +1817,27 @@ ip6_getmoptions(struct inpcb *inp, struct sockopt *sop
  *
  * This routine exists to support legacy IPv6 multicast applications.
  *
- * If inp is non-NULL, use this socket's current FIB number for any
- * required FIB lookup. Look up the group address in the unicast FIB,
- * and use its ifp; usually, this points to the default next-hop.
- * If the FIB lookup fails, return NULL.
+ * Use the socket's current FIB number for any required FIB lookup. Look up the
+ * group address in the unicast FIB, and use its ifp; usually, this points to
+ * the default next-hop.  If the FIB lookup fails, return NULL.
  *
  * FUTURE: Support multiple forwarding tables for IPv6.
  *
  * Returns NULL if no ifp could be found.
  */
 static struct ifnet *
-in6p_lookup_mcast_ifp(const struct inpcb *inp,
-    const struct sockaddr_in6 *gsin6)
+in6p_lookup_mcast_ifp(const struct inpcb *inp, const struct sockaddr_in6 *gsin6)
 {
 	struct nhop_object	*nh;
 	struct in6_addr		dst;
 	uint32_t		scopeid;
 	uint32_t		fibnum;
 
-	KASSERT(inp->inp_vflag & INP_IPV6,
-	    ("%s: not INP_IPV6 inpcb", __func__));
 	KASSERT(gsin6->sin6_family == AF_INET6,
 	    ("%s: not AF_INET6 group", __func__));
 
 	in6_splitscope(&gsin6->sin6_addr, &dst, &scopeid);
-	fibnum = inp ? inp->inp_inc.inc_fibnum : RT_DEFAULT_FIB;
+	fibnum = inp->inp_inc.inc_fibnum;
 	nh = fib6_lookup(fibnum, &dst, scopeid, 0, 0);
 
 	return (nh ? nh->nh_ifp : NULL);


More information about the svn-src-head mailing list