]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Fixing memcmp to avoid coverity issue
authorIqra Siddiqui <imujeebsiddi@vmware.com>
Tue, 18 Jan 2022 08:36:13 +0000 (00:36 -0800)
committerIqra Siddiqui <imujeebsiddi@vmware.com>
Tue, 1 Feb 2022 05:50:50 +0000 (21:50 -0800)
Description:
Replacing memcmp at certain places,
to avoid the coverity issues caused by it.

Co-authored-by: Kantesh Mundargi <kmundaragi@vmware.com>
Signed-off-by: Iqra Siddiqui <imujeebsiddi@vmware.com>
bgpd/bgp_attr.c
bgpd/bgp_attr_evpn.c
bgpd/bgp_attr_evpn.h
bgpd/bgp_evpn.c

index 632cae8c7d0261ce92515ee031a61d8c7ee6d3fd..f2d97625812f3d3d090d27424172c11d61c0584d 100644 (file)
@@ -404,9 +404,8 @@ static bool overlay_index_same(const struct attr *a1, const struct attr *a2)
        if (!a1 && !a2)
                return true;
 
-       return !memcmp(bgp_attr_get_evpn_overlay(a1),
-                      bgp_attr_get_evpn_overlay(a2),
-                      sizeof(struct bgp_route_evpn));
+       return bgp_route_evpn_same(bgp_attr_get_evpn_overlay(a1),
+                                  bgp_attr_get_evpn_overlay(a2));
 }
 
 /* Unknown transit attribute. */
index add999bd44a5b255908bcdc283b603b9b850d084..cbb071738d3678ad33b3dd3397dfb71799d9001e 100644 (file)
 #include "bgpd/bgp_evpn.h"
 #include "bgpd/bgp_evpn_private.h"
 
+bool bgp_route_evpn_same(const struct bgp_route_evpn *e1,
+                        const struct bgp_route_evpn *e2)
+{
+       return (e1->type == e2->type &&
+               !memcmp(&(e1->eth_s_id), &(e2->eth_s_id), sizeof(esi_t)) &&
+               !ipaddr_cmp(&(e1->gw_ip), &(e2->gw_ip)));
+}
+
 void bgp_add_routermac_ecom(struct attr *attr, struct ethaddr *routermac)
 {
        struct ecommunity_val routermac_ecom;
index 64f0e7c51a25bfba617756f84be174d79442f053..bb4a8169301233a4aaba7dd7b0f94b5a269b70ea 100644 (file)
@@ -59,4 +59,7 @@ extern void bgp_attr_evpn_na_flag(struct attr *attr, uint8_t *router_flag,
                bool *proxy);
 extern uint16_t bgp_attr_df_pref_from_ec(struct attr *attr, uint8_t *alg);
 
+
+extern bool bgp_route_evpn_same(const struct bgp_route_evpn *e1,
+                               const struct bgp_route_evpn *e2);
 #endif /* _QUAGGA_BGP_ATTR_EVPN_H */
index ffa4aca3fb140425bed7ee012d17c032bf33ee76..8572ebabc7e8a975d5211e87528cdce9e6d5e663 100644 (file)
@@ -6146,7 +6146,7 @@ static bool bgp_evpn_remote_ip_hash_cmp(const void *p1, const void *p2)
        const struct evpn_remote_ip *ip1 = p1;
        const struct evpn_remote_ip *ip2 = p2;
 
-       return (memcmp(&ip1->addr, &ip2->addr, sizeof(struct ipaddr)) == 0);
+       return !ipaddr_cmp(&ip1->addr, &ip2->addr);
 }
 
 static void bgp_evpn_remote_ip_hash_init(struct bgpevpn *vpn)