]> git.puffer.fish Git - matthieu/frr.git/commitdiff
[bgp] Fix SEGV if empty path is confed-compared ([quagga-users 5968])
authorpaul <paul>
Wed, 23 Nov 2005 02:47:02 +0000 (02:47 +0000)
committerpaul <paul>
Wed, 23 Nov 2005 02:47:02 +0000 (02:47 +0000)
2005-11-23 Paul Jakma <paul.jakma@sun.com>

* bgp_aspath.c: (assegments_parse) should be static

2005-11-23 Juergen Kammer <j.kammer@eurodata.de>

* bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case
  where one or both paths are empty.

bgpd/ChangeLog
bgpd/bgp_aspath.c

index 68cb1176495b651099bda9a37f2766222b5bfb46..59e70cfe3ce2f270a04b27a4db02ed4a438fad34 100644 (file)
@@ -1,3 +1,12 @@
+2005-11-23 Paul Jakma <paul.jakma@sun.com>
+
+       * bgp_aspath.c: (assegments_parse) should be static
+
+2005-11-23 Juergen Kammer <j.kammer@eurodata.de>
+
+       * bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case
+         where one or both paths are empty.
+
 2005-11-14 Paul Jakma <paul.jakma@sun.com>
 
        * bgp_route.c: (bgp_process_rsclient) convert to new workqueue
index 7f85ea10f1b95182f71842a96d3dc0b4078b8c13..9ff1205cb2d74a80689a1ac1ca2e77281124f0c4 100644 (file)
@@ -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;