From ad72740e884f16c1f30a99168428fdd15fadaa68 Mon Sep 17 00:00:00 2001 From: paul Date: Wed, 23 Nov 2005 02:47:02 +0000 Subject: [bgp] Fix SEGV if empty path is confed-compared ([quagga-users 5968]) 2005-11-23 Paul Jakma * bgp_aspath.c: (assegments_parse) should be static 2005-11-23 Juergen Kammer * bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case where one or both paths are empty. --- bgpd/ChangeLog | 9 +++++++++ bgpd/bgp_aspath.c | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog index 68cb1176..59e70cfe 100644 --- a/bgpd/ChangeLog +++ b/bgpd/ChangeLog @@ -1,3 +1,12 @@ +2005-11-23 Paul Jakma + + * bgp_aspath.c: (assegments_parse) should be static + +2005-11-23 Juergen Kammer + + * bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case + where one or both paths are empty. + 2005-11-14 Paul Jakma * bgp_route.c: (bgp_process_rsclient) convert to new workqueue diff --git a/bgpd/bgp_aspath.c b/bgpd/bgp_aspath.c index 7f85ea10..9ff1205c 100644 --- a/bgpd/bgp_aspath.c +++ b/bgpd/bgp_aspath.c @@ -596,7 +596,7 @@ aspath_hash_alloc (void *arg) } /* parse as-segment byte stream in struct assegment */ -struct assegment * +static struct assegment * assegments_parse (struct stream *s, size_t length) { struct assegment_header segh; @@ -1155,6 +1155,9 @@ aspath_cmp_left_confed (struct aspath *aspath1, struct aspath *aspath2) if (! (aspath1 && aspath2) ) return 0; + if ( !(aspath1->segments && aspath2->segments) ) + return 0; + if ( (aspath1->segments->type != AS_CONFED_SEQUENCE) || (aspath2->segments->type != AS_CONFED_SEQUENCE) ) return 0; -- cgit v1.2.1