]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fix some crashes due to NULL pointer
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 28 Apr 2017 17:50:09 +0000 (13:50 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 28 Apr 2017 17:54:29 +0000 (13:54 -0400)
If you specified A.B.C.D, the code would still try to
read A.B.C.D/M and not find it and pass in a NULL pointer
which crashed the code.

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

index 32cf0bcb89cc414663b4327e5d4d75e02dd545e8..d3a6e7e9063a89f3fb386f8aa097c5404ead0acb 100644 (file)
@@ -9297,8 +9297,17 @@ DEFUN (show_ip_bgp_vpn_all_route_prefix,
       vty_out (vty, "Can't find default instance%s", VTY_NEWLINE);
       return CMD_WARNING;
     }
-  network = argv_find (argv, argc, "A.B.C.D", &idx) ? argv[idx]->arg : NULL;
-  network = argv_find (argv, argc, "A.B.C.D/M", &idx) ? argv[idx]->arg : NULL;
+
+  if (argv_find (argv, argc, "A.B.C.D", &idx))
+    network = argv[idx]->arg;
+  else if (argv_find (argv, argc, "A.B.C.D/M", &idx))
+    network = argv[idx]->arg;
+  else
+    {
+      vty_out (vty, "Unable to figure out Network%s", VTY_NEWLINE);
+      return CMD_WARNING;
+    }
+
   return bgp_show_route (vty, bgp, network, AFI_IP, SAFI_MPLS_VPN, NULL, 0, BGP_PATH_ALL, use_json(argc, argv));
 }
 #endif /* KEEP_OLD_VPN_COMMANDS */
@@ -9318,8 +9327,16 @@ DEFUN (show_ip_bgp_l2vpn_evpn_all_route_prefix,
 {
   int idx = 0;
   char *network = NULL;
-  network = argv_find (argv, argc, "A.B.C.D", &idx) ? argv[idx]->arg : NULL;
-  network = argv_find (argv, argc, "A.B.C.D/M", &idx) ? argv[idx]->arg : NULL;
+
+  if (argv_find (argv, argc, "A.B.C.D", &idx))
+    network = argv[idx]->arg;
+  else if (argv_find (argv, argc, "A.B.C.D/M", &idx))
+    network = argv[idx]->arg;
+  else
+    {
+      vty_out (vty, "Unable to figure out Network%s", VTY_NEWLINE);
+      return CMD_WARNING;
+    }
   return bgp_show_route (vty, NULL, network, AFI_L2VPN, SAFI_EVPN, NULL, 0, BGP_PATH_ALL, use_json(argc, argv));
 }