]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: don't try to reconcile AS4_PATH with NULL
authorDavid Lamparter <equinox@opensourcerouting.org>
Sun, 20 Jan 2013 17:29:28 +0000 (18:29 +0100)
committerDavid Lamparter <equinox@opensourcerouting.org>
Fri, 1 Feb 2013 16:55:04 +0000 (17:55 +0100)
bgp_attr_munge_as4_attrs would previously try to reintegrate an AS4_PATH
with a NULL AS_PATH, leading to a rather nasty SEGV.  Let's go by
RFC6793 and treat missing AS_PATH as 0-length AS_PATH, which in turn
means discarding the AS4_PATH.

[NB: we don't actually stick to the actual rule, which is discarding
AS4_PATH if it's longer than AS_PATH; indeed we should probably fix that
too]

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
bgpd/bgp_attr.c

index 1dce39bcc3321f60df4deec344a1c130915bcf2a..cbf2902d618c71932b053469d436ee71d859c9c4 100644 (file)
@@ -1360,6 +1360,9 @@ bgp_attr_munge_as4_attrs (struct peer *const peer,
   /* need to reconcile NEW_AS_PATH and AS_PATH */
   if (!ignore_as4_path && (attr->flag & (ATTR_FLAG_BIT( BGP_ATTR_AS4_PATH))))
     {
+       if (!attr->aspath)
+         return BGP_ATTR_PARSE_PROCEED;
+
        newpath = aspath_reconcile_as4 (attr->aspath, as4_path);
        aspath_unintern (&attr->aspath);
        attr->aspath = aspath_intern (newpath);