summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Ryzhov <iryzhov@nfware.com>2022-02-08 20:31:34 +0300
committerIgor Ryzhov <iryzhov@nfware.com>2022-02-08 20:31:34 +0300
commit60cda04dda2659b5bef684fe7b05ee0e501eb498 (patch)
tree4e6554dacbf14f0b148f60671b91d5e81d80939d
parent107f77b56f1bf4bc4b82668c738f1ff12b3967fb (diff)
*: use ipaddr_cmp instead of memcmp
Using memcmp is wrong because struct ipaddr may contain unitialized padding bytes that should not be compared. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
-rw-r--r--bgpd/bgp_evpn_mh.c2
-rw-r--r--vrrpd/vrrp.c6
-rw-r--r--zebra/zebra_evpn_neigh.c4
3 files changed, 6 insertions, 6 deletions
diff --git a/bgpd/bgp_evpn_mh.c b/bgpd/bgp_evpn_mh.c
index 2254bc6ba7..d5046c4381 100644
--- a/bgpd/bgp_evpn_mh.c
+++ b/bgpd/bgp_evpn_mh.c
@@ -4306,7 +4306,7 @@ static bool bgp_evpn_nh_cmp(const void *p1, const void *p2)
if (n1 == NULL || n2 == NULL)
return false;
- return (memcmp(&n1->ip, &n2->ip, sizeof(struct ipaddr)) == 0);
+ return (ipaddr_cmp(&n1->ip, &n2->ip) == 0);
}
void bgp_evpn_nh_init(struct bgp *bgp_vrf)
diff --git a/vrrpd/vrrp.c b/vrrpd/vrrp.c
index 5c34c66df5..f91803337d 100644
--- a/vrrpd/vrrp.c
+++ b/vrrpd/vrrp.c
@@ -405,7 +405,7 @@ static bool vrrp_has_ip(struct vrrp_vrouter *vr, struct ipaddr *ip)
struct ipaddr *iter;
for (ALL_LIST_ELEMENTS_RO(r->addrs, ln, iter))
- if (!memcmp(&iter->ip, &ip->ip, IPADDRSZ(ip)))
+ if (!ipaddr_cmp(iter, ip))
return true;
return false;
@@ -484,7 +484,7 @@ int vrrp_del_ip(struct vrrp_vrouter *vr, struct ipaddr *ip)
return 0;
for (ALL_LIST_ELEMENTS(r->addrs, ln, nn, iter))
- if (!memcmp(&iter->ip, &ip->ip, IPADDRSZ(ip)))
+ if (!ipaddr_cmp(iter, ip))
list_delete_node(r->addrs, ln);
/*
@@ -903,7 +903,7 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src,
switch (r->fsm.state) {
case VRRP_STATE_MASTER:
- addrcmp = memcmp(&src->ip, &r->src.ip, IPADDRSZ(src));
+ addrcmp = ipaddr_cmp(src, &r->src);
if (pkt->hdr.priority == 0) {
vrrp_send_advertisement(r);
diff --git a/zebra/zebra_evpn_neigh.c b/zebra/zebra_evpn_neigh.c
index 7299391ef6..c3218d0f9a 100644
--- a/zebra/zebra_evpn_neigh.c
+++ b/zebra/zebra_evpn_neigh.c
@@ -72,7 +72,7 @@ static bool neigh_cmp(const void *p1, const void *p2)
if (n1 == NULL || n2 == NULL)
return false;
- return (memcmp(&n1->ip, &n2->ip, sizeof(struct ipaddr)) == 0);
+ return ipaddr_cmp(&n1->ip, &n2->ip) == 0;
}
int neigh_list_cmp(void *p1, void *p2)
@@ -80,7 +80,7 @@ int neigh_list_cmp(void *p1, void *p2)
const struct zebra_neigh *n1 = p1;
const struct zebra_neigh *n2 = p2;
- return memcmp(&n1->ip, &n2->ip, sizeof(struct ipaddr));
+ return ipaddr_cmp(&n1->ip, &n2->ip);
}
struct hash *zebra_neigh_db_create(const char *desc)