]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Adjust the length of tunnel encap sub-tlv by sub-tlv type
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 13 Jun 2024 05:43:21 +0000 (08:43 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Tue, 25 Jun 2024 11:27:46 +0000 (11:27 +0000)
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)

bgpd/bgp_attr.c

index 7aabc2d82028dabbaeb9e66fb0aec6eefdbd6d33..159aa68fee044e00b2f8a3d18ef6d9c50242518b 100644 (file)
@@ -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));