diff options
author | itojun <> | 1999-12-11 08:32:20 +0000 |
---|---|---|
committer | itojun <> | 1999-12-11 08:32:20 +0000 |
commit | f5e469e28bc4486cb124f63ef4a9bc210f205e42 (patch) | |
tree | 32b669bf1cd38dfb6f6023ba1bc00f97b019d3aa | |
parent | 4e33952cfed470971b26120bf2844b19653363e0 (diff) | |
download | openbsd-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.c | 10 |
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) |
55 | static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.37 1999/09/03 18:12:31 deraadt Exp $"; | 55 | static 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)) |