diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2024-06-13 08:43:21 +0300 | 
|---|---|---|
| committer | Mergify <37929162+mergify[bot]@users.noreply.github.com> | 2024-06-25 11:27:46 +0000 | 
| commit | 42a301d5d49c873031546ce4524ff6a1dd316d0e (patch) | |
| tree | cdd494719b3e4e9ab3f91c1a232e61993d562ca9 | |
| parent | d1b69e0a97cbb85f0ec2f145cd6c925ba154ea8b (diff) | |
bgpd: Adjust the length of tunnel encap sub-tlv by sub-tlv type
Fixes: 79563af564ad0fe5b9c8d95bf080d570f87b1859 ("bgpd: Get 1 or 2 octets for Sub-TLV length (Tunnel Encap attr)")
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 34b209f0ae2caca0d1ebcde9d4095375ac31b562)
| -rw-r--r-- | bgpd/bgp_attr.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index 7aabc2d820..159aa68fee 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -2707,10 +2707,13 @@ static int bgp_attr_encap(struct bgp_attr_parser_args *args)  		if (BGP_ATTR_ENCAP == type) {  			subtype = stream_getc(BGP_INPUT(peer)); -			sublength = (subtype < 128) -					    ? stream_getc(BGP_INPUT(peer)) -					    : stream_getw(BGP_INPUT(peer)); -			length -= 2; +			if (subtype < 128) { +				sublength = stream_getc(BGP_INPUT(peer)); +				length -= 2; +			} else { +				sublength = stream_getw(BGP_INPUT(peer)); +				length -= 3; +			}  #ifdef ENABLE_BGP_VNC  		} else {  			subtype = stream_getw(BGP_INPUT(peer));  | 
