From: Ulrich Drepper Date: Wed, 14 May 2008 22:47:15 +0000 (+0000) Subject: (match_prefix): Don't treat IPv4 loopback address special when X-Git-Tag: cvs/fedora-glibc-20080515T0735~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5846c4e2692a18a922cf07ab6c3ec20efa61b4d3;p=platform%2Fupstream%2Fglibc.git (match_prefix): Don't treat IPv4 loopback address special when converting to v4 mapped addressed. --- diff --git a/ChangeLog b/ChangeLog index db05ed2..2dc03d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,8 @@ [BZ #6472] * sysdeps/posix/getaddrinfo.c (get_scope): Loopback addresses have to be treated like link-local addresses. + (match_prefix): Don't treat IPv4 loopback address special when + converting to v4 mapped addressed. * sysdeps/posix/getaddrinfo.c (getaddrinfo): Add _res_hconf_init if necessary. diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index 855c5a5..8908fc1 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -1248,20 +1248,14 @@ match_prefix (const struct sockaddr_in6 *in6, { const struct sockaddr_in *in = (const struct sockaddr_in *) in6; - /* Convert to IPv6 address. */ + /* Construct a V4-to-6 mapped address. */ in6_mem.sin6_family = PF_INET6; in6_mem.sin6_port = in->sin_port; in6_mem.sin6_flowinfo = 0; - if (in->sin_addr.s_addr == htonl (0x7f000001)) - in6_mem.sin6_addr = (struct in6_addr) IN6ADDR_LOOPBACK_INIT; - else - { - /* Construct a V4-to-6 mapped address. */ - memset (&in6_mem.sin6_addr, '\0', sizeof (in6_mem.sin6_addr)); - in6_mem.sin6_addr.s6_addr16[5] = 0xffff; - in6_mem.sin6_addr.s6_addr32[3] = in->sin_addr.s_addr; - in6_mem.sin6_scope_id = 0; - } + memset (&in6_mem.sin6_addr, '\0', sizeof (in6_mem.sin6_addr)); + in6_mem.sin6_addr.s6_addr16[5] = 0xffff; + in6_mem.sin6_addr.s6_addr32[3] = in->sin_addr.s_addr; + in6_mem.sin6_scope_id = 0; in6 = &in6_mem; }