diff options
| -rw-r--r-- | bgpd/bgp_attr.c | 8 | ||||
| -rw-r--r-- | bgpd/bgp_rpki.c | 3 | ||||
| -rw-r--r-- | isisd/isis_te.c | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index 13bc05d638..2cb3164f26 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -2510,6 +2510,14 @@ static int bgp_attr_encap(struct bgp_attr_parser_args *args) args->total); } + if (STREAM_READABLE(BGP_INPUT(peer)) < sublength) { + zlog_err("Tunnel Encap attribute sub-tlv length %d exceeds remaining stream length %zu", + sublength, STREAM_READABLE(BGP_INPUT(peer))); + return bgp_attr_malformed(args, + BGP_NOTIFY_UPDATE_OPT_ATTR_ERR, + args->total); + } + /* alloc and copy sub-tlv */ /* TBD make sure these are freed when attributes are released */ tlv = XCALLOC(MTYPE_ENCAP_TLV, diff --git a/bgpd/bgp_rpki.c b/bgpd/bgp_rpki.c index 5743e5da67..1ca83fa169 100644 --- a/bgpd/bgp_rpki.c +++ b/bgpd/bgp_rpki.c @@ -282,7 +282,8 @@ static void rpki_delete_all_cache_nodes(void) struct cache *cache; for (ALL_LIST_ELEMENTS(cache_list, cache_node, cache_next, cache)) { - rtr_mgr_remove_group(rtr_config, cache->preference); + if (is_running()) + rtr_mgr_remove_group(rtr_config, cache->preference); listnode_delete(cache_list, cache); } } diff --git a/isisd/isis_te.c b/isisd/isis_te.c index 0093279cde..57e876faa0 100644 --- a/isisd/isis_te.c +++ b/isisd/isis_te.c @@ -188,7 +188,7 @@ void isis_link_params_update(struct isis_circuit *circuit, return; /* Sanity Check */ - if ((ifp == NULL) || (circuit->state != C_STATE_UP)) + if (ifp == NULL) return; te_debug("ISIS-TE(%s): Update circuit parameters for interface %s", |
