]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Check if we have real stream data for tunnel encapsulation sub-tlvs 16214/head
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 13 Jun 2024 06:00:21 +0000 (09:00 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 13 Jun 2024 06:00:21 +0000 (09:00 +0300)
When the packet is malformed it can use whatever values it wants. Let's check
what the real data we have in a stream instead of relying on malformed values.

Reported-by: Iggy Frankovic <iggyfran@amazon.com>
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd/bgp_attr.c

index 9f377589e960d9d71bf7c2fcfbc9c96efae483b5..18c7b13535d04e9c05670ff00d2f90dc5aa677a5 100644 (file)
@@ -2721,7 +2721,7 @@ static int bgp_attr_encap(struct bgp_attr_parser_args *args)
                }
        }
 
-       while (length >= 4) {
+       while (STREAM_READABLE(BGP_INPUT(peer)) >= 4) {
                uint16_t subtype = 0;
                uint16_t sublength = 0;
                struct bgp_attr_encap_subtlv *tlv;