From: Donatas Abraitis Date: Tue, 16 Jan 2024 12:35:10 +0000 (+0200) Subject: bgpd: Set AS4 capability received flag only if parsed correctly X-Git-Tag: base_10.0~110^2~5 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=b571176aea651de626e830b9e79e848851eb982d;p=matthieu%2Ffrr.git bgpd: Set AS4 capability received flag only if parsed correctly If we receive a malformed packet, we might end-up with a bad state. Signed-off-by: Donatas Abraitis --- diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c index 09f16bbce6..b85e717457 100644 --- a/bgpd/bgp_open.c +++ b/bgpd/bgp_open.c @@ -622,8 +622,6 @@ static int bgp_capability_llgr(struct peer *peer, /* Unlike other capability parsing routines, this one returns 0 on error */ static as_t bgp_capability_as4(struct peer *peer, struct capability_header *hdr) { - SET_FLAG(peer->cap, PEER_CAP_AS4_RCV); - if (hdr->length != CAPABILITY_CODE_AS4_LEN) { flog_err(EC_BGP_PKT_OPEN, "%s AS4 capability has incorrect data length %d", @@ -633,6 +631,8 @@ static as_t bgp_capability_as4(struct peer *peer, struct capability_header *hdr) as_t as4 = stream_getl(BGP_INPUT(peer)); + SET_FLAG(peer->cap, PEER_CAP_AS4_RCV); + if (BGP_DEBUG(as4, AS4)) zlog_debug( "%s [AS4] about to set cap PEER_CAP_AS4_RCV, got as4 %u",