diff options
Diffstat (limited to 'bgpd')
-rw-r--r-- | bgpd/ChangeLog | 4 | ||||
-rw-r--r-- | bgpd/bgp_route.c | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index 16a56fc2..21a4a56b 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -2,6 +2,10 @@ * bgp_community.c: (community_str2com) Coverity CID#62, fix double-free, use-after-free. + * bgp_route.c: (bgp_afi_node_get) given table should never be + NULL, check/assert this. + (bgp_static_update) Bug #240. Rsclients should only be passed + the static update if they are configured for the afi,safi. 2006-05-04 Paul Jakma <paul.jakma@sun.com> diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 10c88697..f5d69e88 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -65,7 +65,11 @@ bgp_afi_node_get (struct bgp_table *table, afi_t afi, safi_t safi, struct prefix { struct bgp_node *rn; struct bgp_node *prn = NULL; - + + assert (table); + if (!table) + return NULL; + if (safi == SAFI_MPLS_VPN) { prn = bgp_node_get (table, (struct prefix *) prd); @@ -3177,7 +3181,8 @@ bgp_static_update (struct bgp *bgp, struct prefix *p, for (ALL_LIST_ELEMENTS (bgp->rsclient, node, nnode, rsclient)) { - bgp_static_update_rsclient (rsclient, p, bgp_static, afi, safi); + if (CHECK_FLAG (rsclient->af_flags[afi][safi], PEER_FLAG_RSERVER_CLIENT)) + bgp_static_update_rsclient (rsclient, p, bgp_static, afi, safi); } } |