diff options
Diffstat (limited to 'contrib/ntp/libntp/ntp_rfc2553.c')
-rw-r--r-- | contrib/ntp/libntp/ntp_rfc2553.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/contrib/ntp/libntp/ntp_rfc2553.c b/contrib/ntp/libntp/ntp_rfc2553.c index a9ebb4b..8409629 100644 --- a/contrib/ntp/libntp/ntp_rfc2553.c +++ b/contrib/ntp/libntp/ntp_rfc2553.c @@ -203,11 +203,12 @@ copy_addrinfo_common( else ai_nxt = ai_src->ai_next; *ai_cpy = *ai_src; - REQUIRE(ai_src->ai_addrlen <= sizeof(sockaddr_u)); + DEBUG_INSIST(ai_cpy->ai_canonname == ai_src->ai_canonname); + INSIST(ai_src->ai_addrlen <= sizeof(sockaddr_u)); memcpy(psau, ai_src->ai_addr, ai_src->ai_addrlen); ai_cpy->ai_addr = &psau->sa; ++psau; - if (NULL != ai_cpy->ai_canonname) { + if (NULL != ai_src->ai_canonname) { ai_cpy->ai_canonname = pcanon; str_octets = 1 + strlen(ai_src->ai_canonname); memcpy(pcanon, ai_src->ai_canonname, str_octets); @@ -480,15 +481,16 @@ do_nodename( * set elsewhere so that we can set the appropriate wildcard */ if (nodename == NULL) { - ai->ai_addrlen = sizeof(struct sockaddr_storage); if (ai->ai_family == AF_INET) { + ai->ai_addrlen = sizeof(struct sockaddr_in); sockin = (struct sockaddr_in *)ai->ai_addr; sockin->sin_family = (short) ai->ai_family; sockin->sin_addr.s_addr = htonl(INADDR_ANY); } else { + ai->ai_addrlen = sizeof(struct sockaddr_in6); sockin6 = (struct sockaddr_in6 *)ai->ai_addr; sockin6->sin6_family = (short) ai->ai_family; /* |