]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: fix insecure data write with area addresses
authorLouis Scalbert <louis.scalbert@6wind.com>
Thu, 28 Sep 2023 14:55:43 +0000 (16:55 +0200)
committerLouis Scalbert <louis.scalbert@6wind.com>
Thu, 28 Sep 2023 15:51:26 +0000 (17:51 +0200)
Fix an issue where an attacker may inject a tainted length value to
corrupt the memory.

> CID 1568380 (#1 of 1): Untrusted value as argument (TAINTED_SCALAR)
> 9. tainted_data: Passing tainted expression length to bgp_linkstate_nlri_value_display, which uses it as an offset

Fixes: 8b531b1107 ("bgpd: store and send bgp link-state attributes") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
bgpd/bgp_linkstate_tlv.c

index 1594d8fd9552b04fea3abd490f1c77a459a8767c..f2bd36524d3fd4eb642f546d2235d8be07d68b97 100644 (file)
@@ -1528,6 +1528,11 @@ static void bgp_linkstate_tlv_isis_area_indentifier_display(struct vty *vty,
 {
        struct iso_address addr;
 
+       if (length > sizeof(addr.area_addr)) {
+               bgp_linkstate_tlv_hexa_display(vty, pnt, length, json);
+               return;
+       }
+
        addr.addr_len = length;
        memcpy(addr.area_addr, pnt, length);