]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: memset buf to prevent uninited writes into kernel
authorDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 17 May 2018 22:46:14 +0000 (18:46 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Thu, 17 May 2018 22:46:14 +0000 (18:46 -0400)
Setup the buf used for extra data passed into kernel such
that we are cleaning it out before writing data to it,
so we can avoid writing uninited data.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
zebra/rt_netlink.c

index 9510a0e12c2b452c02fa25b010d4647c65578b70..2fd7bee05628fce6d646dc73f36e39eda7d475e5 100644 (file)
@@ -1308,8 +1308,7 @@ static int netlink_neigh_update(int cmd, int ifindex, uint32_t addr, char *lla,
 
        struct zebra_ns *zns = zebra_ns_lookup(ns_id);
 
-       memset(&req.n, 0, sizeof(req.n));
-       memset(&req.ndm, 0, sizeof(req.ndm));
+       memset(&req, 0, sizeof(req));
 
        req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndmsg));
        req.n.nlmsg_flags = NLM_F_CREATE | NLM_F_REQUEST;
@@ -1666,8 +1665,7 @@ int kernel_get_ipmr_sg_stats(struct zebra_vrf *zvrf, void *in)
        struct zebra_ns *zns;
 
        zns = zvrf->zns;
-       memset(&req.n, 0, sizeof(req.n));
-       memset(&req.ndm, 0, sizeof(req.ndm));
+       memset(&req, 0, sizeof(req));
 
        req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndmsg));
        req.n.nlmsg_flags = NLM_F_REQUEST;
@@ -1759,8 +1757,7 @@ static int netlink_vxlan_flood_list_update(struct interface *ifp,
        struct zebra_vrf *zvrf = zebra_vrf_lookup_by_id(ifp->vrf_id);
 
        zns = zvrf->zns;
-       memset(&req.n, 0, sizeof(req.n));
-       memset(&req.ndm, 0, sizeof(req.ndm));
+       memset(&req, 0, sizeof(req));
 
        req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndmsg));
        req.n.nlmsg_flags = NLM_F_REQUEST;
@@ -2075,8 +2072,7 @@ static int netlink_macfdb_update(struct interface *ifp, vlanid_t vid,
                return -1;
        }
 
-       memset(&req.n, 0, sizeof(req.n));
-       memset(&req.ndm, 0, sizeof(req.ndm));
+       memset(&req, 0, sizeof(req));
 
        req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndmsg));
        req.n.nlmsg_flags = NLM_F_REQUEST;
@@ -2392,8 +2388,7 @@ static int netlink_neigh_update2(struct interface *ifp, struct ipaddr *ip,
        struct zebra_vrf *zvrf = zebra_vrf_lookup_by_id(ifp->vrf_id);
 
        zns = zvrf->zns;
-       memset(&req.n, 0, sizeof(req.n));
-       memset(&req.ndm, 0, sizeof(req.ndm));
+       memset(&req, 0, sizeof(req));
 
        req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ndmsg));
        req.n.nlmsg_flags = NLM_F_REQUEST;