summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libc/net/gethostnamadr.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/lib/libc/net/gethostnamadr.c b/src/lib/libc/net/gethostnamadr.c
index 64be28a351..13a8eef846 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.38 1999/12/11 08:32:20 itojun Exp $"; 55static char rcsid[] = "$OpenBSD: gethostnamadr.c,v 1.39 1999/12/11 08:40:17 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>
@@ -664,8 +664,6 @@ gethostbyaddr(addr, len, af)
664 int len, af; 664 int len, af;
665{ 665{
666 const u_char *uaddr = (const u_char *)addr; 666 const u_char *uaddr = (const u_char *)addr;
667 static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff };
668 static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 };
669 int n, size, i; 667 int n, size, i;
670 querybuf buf; 668 querybuf buf;
671 register struct hostent *hp; 669 register struct hostent *hp;
@@ -682,11 +680,11 @@ gethostbyaddr(addr, len, af)
682 } 680 }
683 681
684 if (af == AF_INET6 && len == IN6ADDRSZ && 682 if (af == AF_INET6 && len == IN6ADDRSZ &&
685 (!bcmp(uaddr, mapped, sizeof mapped) || 683 (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)uaddr) ||
686 !bcmp(uaddr, tunnelled, sizeof tunnelled))) { 684 IN6_IS_ADDR_V4COMPAT((struct in6_addr *)uaddr))) {
687 /* Unmap. */ 685 /* Unmap. */
688 addr += sizeof mapped; 686 addr += IN6ADDRSZ - INADDRSZ;
689 uaddr += sizeof mapped; 687 uaddr += IN6ADDRSZ - INADDRSZ;
690 af = AF_INET; 688 af = AF_INET;
691 len = INADDRSZ; 689 len = INADDRSZ;
692 } 690 }