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;
 		}