From 87e34b58899bea95296d0e2d107cde4b3f4a1972 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 28 Apr 2017 13:50:09 -0400 Subject: [PATCH] bgpd: Fix some crashes due to NULL pointer 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 --- bgpd/bgp_route.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 32cf0bcb89..d3a6e7e906 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -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)); } -- 2.39.5