]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Fix crash when cannot find igmp
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 27 Oct 2016 22:09:09 +0000 (18:09 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 22 Dec 2016 01:26:12 +0000 (20:26 -0500)
When we look up a igmp data structure, if we
don't find it, safely do nothing.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_mroute.c

index 7935f7290ec5a332f6d837dbe586ef974f91e691..8ece65d31720cc7bf6496b69bba349bdb6e0bc36 100644 (file)
@@ -444,15 +444,15 @@ int pim_mroute_msg(int fd, const char *buf, int buf_size)
     ifaddr = pim_find_primary_addr(ifp);
     igmp = pim_igmp_sock_lookup_ifaddr(pim_ifp->igmp_socket_list, ifaddr);
 
-    if (PIM_DEBUG_MROUTE_DETAIL) {
+    if (PIM_DEBUG_MROUTE) {
       pim_inet4_dump("<src?>", ip_hdr->ip_src, ip_src_str, sizeof(ip_src_str));
       pim_inet4_dump("<dst?>", ip_hdr->ip_dst, ip_dst_str, sizeof(ip_dst_str));
 
-      zlog_warn("%s: igmp kernel upcall on %s for %s -> %s",
-                __PRETTY_FUNCTION__, ifp->name, ip_src_str, ip_dst_str);
+      zlog_warn("%s: igmp kernel upcall on %s(%p) for %s -> %s",
+                __PRETTY_FUNCTION__, ifp->name, igmp, ip_src_str, ip_dst_str);
     }
-
-    pim_igmp_packet(igmp, (char *)buf, buf_size);
+    if (igmp)
+      pim_igmp_packet(igmp, (char *)buf, buf_size);
 
   } else if (ip_hdr->ip_p) {
     if (PIM_DEBUG_MROUTE_DETAIL) {