diff --git a/src/host_utils.c b/src/host_utils.c index 649be67b5907232595a87ab5965009afe1c30f25..a6aa17a20e50b3c23da97a2b5e90aed198c2ca52 100644 --- a/src/host_utils.c +++ b/src/host_utils.c @@ -272,7 +272,12 @@ int host_get_netlink_ip6(uint8_t *mac_addr, struct host_node *p) ret = memcmp(hwaddr, mac_addr, 6); if (ret == 0) { - strncpy(p->ipv6addr[p->ipv6addr_count], addr_str, 128); + if (p->ipv6addr_count >= HOST_MAX_IPV6ADDR) { + nl_object_put((struct nl_object *) neigh); + break; + } + memset(p->ipv6addr[p->ipv6addr_count], 0, 128); + strncpy(p->ipv6addr[p->ipv6addr_count], addr_str, 127); dbg("ipv6addr= [%s] mac=["MACFMT"]\n", p->ipv6addr[p->ipv6addr_count], MAC2STR(hwaddr)); p->ipv6addr_count = p->ipv6addr_count + 1; }