]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ripd: Prevent rip null dereference
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 2 Feb 2017 01:36:44 +0000 (20:36 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 2 Feb 2017 01:36:44 +0000 (20:36 -0500)
When rip is NULL, we dereference it
anyways.

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

index 9f8b279eb8c45a994448fcec5d9b29a50cf1d48d..772ba49f93c073158edc569ddb8f19dfcb5b73d8 100644 (file)
@@ -585,24 +585,26 @@ rip_if_down(struct interface *ifp)
   struct list *list = NULL;
   struct listnode *listnode = NULL, *nextnode = NULL;
   if (rip)
-    for (rp = route_top (rip->table); rp; rp = route_next (rp))
-      if ((list = rp->info) != NULL)
-        for (ALL_LIST_ELEMENTS (list, listnode, nextnode, rinfo))
-          if (rinfo->ifindex == ifp->ifindex)
-            rip_ecmp_delete (rinfo);
+    {
+      for (rp = route_top (rip->table); rp; rp = route_next (rp))
+        if ((list = rp->info) != NULL)
+          for (ALL_LIST_ELEMENTS (list, listnode, nextnode, rinfo))
+            if (rinfo->ifindex == ifp->ifindex)
+              rip_ecmp_delete (rinfo);
 
-  ri = ifp->info;
+      ri = ifp->info;
   
-  if (ri->running)
-   {
-     if (IS_RIP_DEBUG_EVENT)
-       zlog_debug ("turn off %s", ifp->name);
+      if (ri->running)
+        {
+          if (IS_RIP_DEBUG_EVENT)
+            zlog_debug ("turn off %s", ifp->name);
 
-     /* Leave from multicast group. */
-     rip_multicast_leave (ifp, rip->sock);
+          /* Leave from multicast group. */
+          rip_multicast_leave (ifp, rip->sock);
 
-     ri->running = 0;
-   }
+          ri->running = 0;
+        }
+    }
 
   return 0;
 }