From f5e469e28bc4486cb124f63ef4a9bc210f205e42 Mon Sep 17 00:00:00 2001 From: itojun <> Date: Sat, 11 Dec 1999 08:32:20 +0000 Subject: fix gethostbyname2(foo, AF_INET6). on /etc/hosts lookup, file static variable "hosts" was damaged and prevented lookup of IPv6 hostnames. --- src/lib/libc/net/gethostnamadr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/lib') 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 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.37 1999/09/03 18:12:31 deraadt Exp $"; +static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.38 1999/12/11 08:32:20 itojun Exp $"; #endif /* LIBC_SCCS and not lint */ #include @@ -843,6 +843,11 @@ _gethtent() } else { goto again; } + /* if this is not something we're looking for, skip it. */ + if (host.h_addrtype != af) + goto again; + if (host.h_length != len) + goto again; h_addr_ptrs[0] = (char *)host_addr; h_addr_ptrs[1] = NULL; host.h_addr_list = h_addr_ptrs; @@ -920,6 +925,9 @@ _gethtbyaddr(addr, len, af) { register struct hostent *p; + host.h_length = len; + host.h_addrtype = af; + _sethtent(0); while ((p = _gethtent())) if (p->h_addrtype == af && !bcmp(p->h_addr, addr, len)) -- cgit v1.2.3-55-g6feb