]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: don't overrun fixed zapi array of nexthops
authorMark Stapp <mjs@voltanet.io>
Wed, 14 Apr 2021 13:24:37 +0000 (09:24 -0400)
committerMark Stapp <mjs@voltanet.io>
Wed, 14 Apr 2021 13:24:37 +0000 (09:24 -0400)
Avoid overrunning the fixed-size array of nexthops in a
zapi_nhg.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
bgpd/bgp_evpn_mh.c

index 868238ebddd46e26e51cd4560b108f0bcf53ad30..6467ff8a283c97c1af0f9ac2bd1c152308a2adef 100644 (file)
@@ -2493,6 +2493,10 @@ static void bgp_evpn_l3nhg_zebra_add_v4_or_v6(struct bgp_evpn_es_vrf *es_vrf,
                if (!CHECK_FLAG(es_vtep->flags, BGP_EVPNES_VTEP_ACTIVE))
                        continue;
 
+               /* Don't overrun the zapi buffer. */
+               if (api_nhg.nexthop_num == MULTIPATH_NUM)
+                       break;
+
                /* overwrite the gw */
                if (v4_nhg)
                        nh.gate.ipv4 = es_vtep->vtep_ip;
@@ -2514,9 +2518,6 @@ static void bgp_evpn_l3nhg_zebra_add_v4_or_v6(struct bgp_evpn_es_vrf *es_vrf,
        if (!api_nhg.nexthop_num)
                return;
 
-       if (api_nhg.nexthop_num > MULTIPATH_NUM)
-               return;
-
        zclient_nhg_send(zclient, ZEBRA_NHG_ADD, &api_nhg);
 }