]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Get 1 or 2 octets for Sub-TLV length (Tunnel Encap attr)
authorDonatas Abraitis <donatas@opensourcerouting.org>
Mon, 10 Jul 2023 11:40:24 +0000 (14:40 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Thu, 13 Jun 2024 07:07:59 +0000 (07:07 +0000)
The total number of octets of the Sub-TLV Value field. The Sub-TLV Length field
contains 1 octet if the Sub-TLV Type field contains a value in the range from
0-127. The Sub-TLV Length field contains two octets if the Sub-TLV Type field
contains a value in the range from 128-255.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 79563af564ad0fe5b9c8d95bf080d570f87b1859)

bgpd/bgp_attr.c

index b5377d29fc013b3291cee52ad6156fafa4726440..3767d28b1bd543eb8522d58ef2281d522ae9e7b5 100644 (file)
@@ -2664,7 +2664,9 @@ static int bgp_attr_encap(struct bgp_attr_parser_args *args)
 
                if (BGP_ATTR_ENCAP == type) {
                        subtype = stream_getc(BGP_INPUT(peer));
-                       sublength = stream_getc(BGP_INPUT(peer));
+                       sublength = (subtype < 128)
+                                           ? stream_getc(BGP_INPUT(peer))
+                                           : stream_getw(BGP_INPUT(peer));
                        length -= 2;
 #ifdef ENABLE_BGP_VNC
                } else {