Fix panic in IPv6 multicast code.
Add check that ifp supports IPv6 multicasts in in6_getmulti. This fixes panic when user application tries to join into multicast group on an interface that doesn't support IPv6 multicasts, like IFT_PFLOG interfaces. PR: 257302 Reviewed by: melifaro MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31420
This commit is contained in:
parent
bb5cd80e8b
commit
d477a7feed
@ -374,9 +374,18 @@ in6_getmulti(struct ifnet *ifp, const struct in6_addr *group,
|
||||
IN6_MULTI_LIST_LOCK();
|
||||
IF_ADDR_WLOCK(ifp);
|
||||
NET_EPOCH_ENTER(et);
|
||||
inm = in6m_lookup_locked(ifp, group);
|
||||
/*
|
||||
* Does ifp support IPv6 multicasts?
|
||||
*/
|
||||
if (ifp->if_afdata[AF_INET6] == NULL)
|
||||
error = ENODEV;
|
||||
else
|
||||
inm = in6m_lookup_locked(ifp, group);
|
||||
NET_EPOCH_EXIT(et);
|
||||
|
||||
if (error != 0)
|
||||
goto out_locked;
|
||||
|
||||
if (inm != NULL) {
|
||||
/*
|
||||
* If we already joined this group, just bump the
|
||||
|
Loading…
Reference in New Issue
Block a user