=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/dig/dighost.c,v retrieving revision 1.34 retrieving revision 1.35 diff -c -r1.34 -r1.35 *** src/usr.bin/dig/dighost.c 2020/09/15 11:47:42 1.34 --- src/usr.bin/dig/dighost.c 2020/12/20 11:27:47 1.35 *************** *** 14,20 **** * PERFORMANCE OF THIS SOFTWARE. */ ! /* $Id: dighost.c,v 1.34 2020/09/15 11:47:42 florian Exp $ */ /*! \file * \note --- 14,20 ---- * PERFORMANCE OF THIS SOFTWARE. */ ! /* $Id: dighost.c,v 1.35 2020/12/20 11:27:47 florian Exp $ */ /*! \file * \note *************** *** 498,503 **** --- 498,504 ---- { struct addrinfo *ai = NULL, *tmpai, hints; int result, i; + char dport[sizeof("65535")]; REQUIRE(hostname != NULL); REQUIRE(addrs != NULL); *************** *** 513,521 **** hints.ai_family = PF_UNSPEC; hints.ai_flags = AI_ADDRCONFIG; } ! hints.ai_socktype = SOCK_STREAM; ! result = getaddrinfo(hostname, NULL, &hints, &ai); switch (result) { case 0: break; --- 514,523 ---- hints.ai_family = PF_UNSPEC; hints.ai_flags = AI_ADDRCONFIG; } ! hints.ai_socktype = SOCK_DGRAM; ! snprintf(dport, sizeof(dport), "%d", dstport); ! result = getaddrinfo(hostname, dport, &hints, &ai); switch (result) { case 0: break; *************** *** 532,547 **** if (tmpai->ai_family != AF_INET && tmpai->ai_family != AF_INET6) continue; ! if (tmpai->ai_family == AF_INET) { ! struct sockaddr_in *sin; ! sin = (struct sockaddr_in *)tmpai->ai_addr; ! isc_sockaddr_fromin(&addrs[i], &sin->sin_addr, dstport); ! } else { ! struct sockaddr_in6 *sin6; ! sin6 = (struct sockaddr_in6 *)tmpai->ai_addr; ! isc_sockaddr_fromin6(&addrs[i], &sin6->sin6_addr, ! dstport); ! } i++; } --- 534,543 ---- if (tmpai->ai_family != AF_INET && tmpai->ai_family != AF_INET6) continue; ! if (tmpai->ai_addrlen > sizeof(addrs[i])) ! continue; ! memset(&addrs[i], 0, sizeof(addrs[i])); ! memcpy(&addrs[i], tmpai->ai_addr, tmpai->ai_addrlen); i++; }