bgpd: Set the software version capability received flag only after a validation

We shouldn't set it blindly once the packet is received, but first we have to
do some sanity checks.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
Donatas Abraitis 2023-11-08 15:26:40 +02:00
parent bfc2a205ab
commit cc75bdf026

View File

@ -889,8 +889,6 @@ static int bgp_capability_software_version(struct peer *peer,
size_t end = stream_get_getp(s) + hdr->length;
uint8_t len;
SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_RCV);
len = stream_getc(s);
if (stream_get_getp(s) + len > end) {
flog_warn(
@ -900,6 +898,8 @@ static int bgp_capability_software_version(struct peer *peer,
return -1;
}
SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_RCV);
if (len > BGP_MAX_SOFT_VERSION) {
flog_warn(EC_BGP_CAPABILITY_INVALID_LENGTH,
"%s: Received Software Version, but the length is too big, truncating, from peer %s",