summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2021-10-15 09:13:39 -0400
committerGitHub <noreply@github.com>2021-10-15 09:13:39 -0400
commitcc6a70422173d3fba7416aad87bd566387d2bff7 (patch)
treec86571aa7424e0fed7571fce81b8ed7b67b041b5
parent8ce1e584ec6b28d844b79abb11292bf2f6b109e8 (diff)
parentf861249fffec298f1e7e0dd9c5e24e2c65d16684 (diff)
Merge pull request #9808 from FRRouting/mergify/bp/dev/8.1/pr-9686
zebra: fix buffer overflow (backport #9686)
-rw-r--r--zebra/rt_netlink.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index e36f320ad9..ec2c09e680 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -3744,7 +3744,6 @@ static int netlink_ipneigh_change(struct nlmsghdr *h, int len, ns_id_t ns_id)
if (tb[NDA_LLADDR]) {
/* copy LLADDR information */
l2_len = RTA_PAYLOAD(tb[NDA_LLADDR]);
- memcpy(&mac, RTA_DATA(tb[NDA_LLADDR]), l2_len);
}
if (l2_len == IPV4_MAX_BYTELEN || l2_len == 0) {
union sockunion link_layer_ipv4;
@@ -3752,7 +3751,7 @@ static int netlink_ipneigh_change(struct nlmsghdr *h, int len, ns_id_t ns_id)
if (l2_len) {
sockunion_family(&link_layer_ipv4) = AF_INET;
memcpy((void *)sockunion_get_addr(&link_layer_ipv4),
- &mac, l2_len);
+ RTA_DATA(tb[NDA_LLADDR]), l2_len);
} else
sockunion_family(&link_layer_ipv4) = AF_UNSPEC;
zsend_nhrp_neighbor_notify(