This patches avoids the crash. Not sure how ifma_protospec is supposed to be handled so I'm not committing it.

   Sam

Index: in.c
===================================================================
--- in.c        (revision 189750)
+++ in.c        (working copy)
@@ -1040,7 +1040,8 @@
         */
        IF_ADDR_LOCK(ifp);
        TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
-               if (ifma->ifma_addr->sa_family != AF_INET)
+               if (ifma->ifma_addr->sa_family != AF_INET ||
+                   ifma->ifma_protospec == NULL)
                        continue;
                inm = (struct in_multi *)ifma->ifma_protospec;
                LIST_INSERT_HEAD(&purgeinms, inm, inm_link);
Index: igmp.c
===================================================================
--- igmp.c      (revision 189750)
+++ igmp.c      (working copy)
@@ -623,7 +623,8 @@
        if (igi->igi_version == IGMP_VERSION_3) {
                IF_ADDR_LOCK(ifp);
                TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
-                       if (ifma->ifma_addr->sa_family != AF_INET)
+                       if (ifma->ifma_addr->sa_family != AF_INET ||
+                           ifma->ifma_protospec == NULL)
                                continue;
                        inm = (struct in_multi *)ifma->ifma_protospec;
                        if (inm->inm_state == IGMP_LEAVING_MEMBER) {
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to