summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoritojun <>1999-12-11 08:32:20 +0000
committeritojun <>1999-12-11 08:32:20 +0000
commitf5e469e28bc4486cb124f63ef4a9bc210f205e42 (patch)
tree32b669bf1cd38dfb6f6023ba1bc00f97b019d3aa
parent4e33952cfed470971b26120bf2844b19653363e0 (diff)
downloadopenbsd-f5e469e28bc4486cb124f63ef4a9bc210f205e42.tar.gz
openbsd-f5e469e28bc4486cb124f63ef4a9bc210f205e42.tar.bz2
openbsd-f5e469e28bc4486cb124f63ef4a9bc210f205e42.zip
fix gethostbyname2(foo, AF_INET6).
on /etc/hosts lookup, file static variable "hosts" was damaged and prevented lookup of IPv6 hostnames.
-rw-r--r--src/lib/libc/net/gethostnamadr.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/libc/net/gethostnamadr.c b/src/lib/libc/net/gethostnamadr.c
index f8f2ccd2d0..64be28a351 100644
--- a/src/lib/libc/net/gethostnamadr.c
+++ b/src/lib/libc/net/gethostnamadr.c
@@ -52,7 +52,7 @@
52 */ 52 */
53 53
54#if defined(LIBC_SCCS) && !defined(lint) 54#if defined(LIBC_SCCS) && !defined(lint)
55static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.37 1999/09/03 18:12:31 deraadt Exp $"; 55static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.38 1999/12/11 08:32:20 itojun Exp $";
56#endif /* LIBC_SCCS and not lint */ 56#endif /* LIBC_SCCS and not lint */
57 57
58#include <sys/param.h> 58#include <sys/param.h>
@@ -843,6 +843,11 @@ _gethtent()
843 } else { 843 } else {
844 goto again; 844 goto again;
845 } 845 }
846 /* if this is not something we're looking for, skip it. */
847 if (host.h_addrtype != af)
848 goto again;
849 if (host.h_length != len)
850 goto again;
846 h_addr_ptrs[0] = (char *)host_addr; 851 h_addr_ptrs[0] = (char *)host_addr;
847 h_addr_ptrs[1] = NULL; 852 h_addr_ptrs[1] = NULL;
848 host.h_addr_list = h_addr_ptrs; 853 host.h_addr_list = h_addr_ptrs;
@@ -920,6 +925,9 @@ _gethtbyaddr(addr, len, af)
920{ 925{
921 register struct hostent *p; 926 register struct hostent *p;
922 927
928 host.h_length = len;
929 host.h_addrtype = af;
930
923 _sethtent(0); 931 _sethtent(0);
924 while ((p = _gethtent())) 932 while ((p = _gethtent()))
925 if (p->h_addrtype == af && !bcmp(p->h_addr, addr, len)) 933 if (p->h_addrtype == af && !bcmp(p->h_addr, addr, len))