From: Renato Westphal Date: Fri, 19 Oct 2018 18:54:26 +0000 (-0300) Subject: bgpd: fix some NULL pointer dereference bugs X-Git-Tag: frr-7.1-dev~253^2~9 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=71355f5426a26188c9f15f6da4bb14403da1ac8f;p=matthieu%2Ffrr.git bgpd: fix some NULL pointer dereference bugs Other parts of the rfapi code also check if these pointers are NULL or not before using them. Signed-off-by: Renato Westphal --- diff --git a/bgpd/rfapi/bgp_rfapi_cfg.c b/bgpd/rfapi/bgp_rfapi_cfg.c index cb45fc8da4..3c472dda48 100644 --- a/bgpd/rfapi/bgp_rfapi_cfg.c +++ b/bgpd/rfapi/bgp_rfapi_cfg.c @@ -1601,8 +1601,10 @@ DEFUN (vnc_nve_group_export_no_prefixlist, idx += 2; /* skip afi and keyword */ if (is_bgp) { - if (idx == argc || strmatch(argv[idx]->arg, - rfg->plist_export_bgp_name[afi])) { + if (idx == argc + || (rfg->plist_export_bgp_name[afi] + && strmatch(argv[idx]->arg, + rfg->plist_export_bgp_name[afi]))) { if (rfg->plist_export_bgp_name[afi]) free(rfg->plist_export_bgp_name[afi]); rfg->plist_export_bgp_name[afi] = NULL; @@ -1612,8 +1614,9 @@ DEFUN (vnc_nve_group_export_no_prefixlist, } } else { if (idx == argc - || strmatch(argv[idx]->arg, - rfg->plist_export_zebra_name[afi])) { + || (rfg->plist_export_zebra_name[afi] + && strmatch(argv[idx]->arg, + rfg->plist_export_zebra_name[afi]))) { if (rfg->plist_export_zebra_name[afi]) free(rfg->plist_export_zebra_name[afi]); rfg->plist_export_zebra_name[afi] = NULL; @@ -1732,8 +1735,10 @@ DEFUN (vnc_nve_group_export_no_routemap, } if (is_bgp) { - if (idx == argc || strmatch(argv[idx]->arg, - rfg->routemap_export_bgp_name)) { + if (idx == argc + || (rfg->routemap_export_bgp_name + && strmatch(argv[idx]->arg, + rfg->routemap_export_bgp_name))) { if (rfg->routemap_export_bgp_name) free(rfg->routemap_export_bgp_name); rfg->routemap_export_bgp_name = NULL; @@ -1743,8 +1748,10 @@ DEFUN (vnc_nve_group_export_no_routemap, vnc_direct_bgp_reexport_group_afi(bgp, rfg, AFI_IP6); } } else { - if (idx == argc || strmatch(argv[idx]->arg, - rfg->routemap_export_zebra_name)) { + if (idx == argc + || (rfg->routemap_export_zebra_name + && strmatch(argv[idx]->arg, + rfg->routemap_export_zebra_name))) { if (rfg->routemap_export_zebra_name) free(rfg->routemap_export_zebra_name); rfg->routemap_export_zebra_name = NULL;