summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2024-06-13 08:43:21 +0300
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2024-06-25 11:27:46 +0000
commit42a301d5d49c873031546ce4524ff6a1dd316d0e (patch)
treecdd494719b3e4e9ab3f91c1a232e61993d562ca9
parentd1b69e0a97cbb85f0ec2f145cd6c925ba154ea8b (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.c11
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));