* bgp_packet.c: (bgp_update_receive) doesn't differentiate between NLRIs that
  are 0 AFI/SAFI cause they weren't set, and those because a peer sent a
  bogus AFI/SAFI, before sending sending what may be a misleading, spurious
  log message.  Check the .nlri pointer is set and avoid this.

Incorporating a suggestion from: G. Paul Ziemba <[email protected]>
---
 bgpd/bgp_packet.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 740b0f1..9cbb5b5 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -1631,7 +1631,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
     NLRI_TYPE_MAX,
   };
   struct bgp_nlri nlris[NLRI_TYPE_MAX];
-
+  
   /* Status must be Established. */
   if (peer->status != Established) 
     {
@@ -1645,6 +1645,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
   memset (&attr, 0, sizeof (struct attr));
   memset (&extra, 0, sizeof (struct attr_extra));
   memset (&nlris, 0, sizeof nlris);
+  
   attr.extra = &extra;
 
   s = peer->ibuf;
@@ -1781,6 +1782,8 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
   /* Parse any given NLRIs */
   for (i = NLRI_UPDATE; i < NLRI_TYPE_MAX; i++)
     {
+      if (!nlris[i].nlri) continue;
+      
       /* We use afi and safi as indices into tables and what not.  It would
        * be impossible, at this time, to support unknown afi/safis.  And
        * anyway, the peer needs to be configured to enable the afi/safi
-- 
2.5.5


_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to