--- a/src/bgp/bgp.c 2010-12-21 17:56:52.000000000 +0100 +++ b/src/bgp/bgp.c 2010-12-29 17:44:43.000000000 +0100 @@ -1782,7 +1782,7 @@ sa = &sa_local; memset(sa, 0, sizeof(struct sockaddr)); sa->sa_family = AF_INET6; - memcpy(&((struct sockaddr_in6 *)sa)->sin6_addr, &info->attr->mp_nexthop.address.ipv6, 16); + memcpy(&((struct sockaddr_in6 *)sa)->sin6_addr, &info->attr->mp_nexthop.address.ipv6, sizeof(&((struct sockaddr_in6 *)sa)->sin6_addr)); goto start_again; } #endif @@ -1911,7 +1911,7 @@ pptrs->f_agent = (char *) &sa_local; memset(sa, 0, sizeof(struct sockaddr)); sa->sa_family = AF_INET6; - memcpy(&((struct sockaddr_in6 *)sa)->sin6_addr, &info->attr->mp_nexthop.address.ipv6, 16); + memcpy(&((struct sockaddr_in6 *)sa)->sin6_addr, &info->attr->mp_nexthop.address.ipv6, sizeof(&((struct sockaddr_in6 *)sa)->sin6_addr)); saved_info = (char *) info; ttl--; goto start_again;