]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
drop address family conversions from /etc/hosts parser
authorAlexandre Oliva <aoliva@redhat.com>
Sat, 27 Sep 2014 10:13:20 +0000 (07:13 -0300)
committerAlexandre Oliva <aoliva@redhat.com>
Fri, 7 Nov 2014 09:18:53 +0000 (07:18 -0200)
for ChangeLog

* nss/nss_files/files-hosts.c (LINE_PARSER): Drop all address
family conversions.

nss/nss_files/files-hosts.c

index 639345a6726d7559b36d57b9948486de5df2d1f2..c1f22c6321b2590621afb58daa7d606257655cde 100644 (file)
@@ -43,9 +43,6 @@ struct hostent_data
     char *h_addr_ptrs[2];      /* Points to that and null terminator.  */
   };
 
-#define IN_IS_ADDR_LOOPBACK(addr) \
-  (((const char *)(addr))[0] == IN_LOOPBACKNET)
-
 #define TRAILING_LIST_MEMBER           h_aliases
 #define TRAILING_LIST_SEPARATOR_P      isspace
 #include "files-parse.c"
@@ -60,29 +57,12 @@ LINE_PARSER
    if (inet_pton (af == AF_UNSPEC ? AF_INET : af, addr, entdata->host_addr)
        > 0)
      af = af == AF_UNSPEC ? AF_INET : af;
+   else if (af == AF_UNSPEC
+           && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
+     af = AF_INET6;
    else
-     {
-       if (af == AF_INET6 && (flags & AI_V4MAPPED) != 0
-          && inet_pton (AF_INET, addr, entdata->host_addr) > 0
-          && !IN_IS_ADDR_LOOPBACK (entdata->host_addr))
-        map_v4v6_address ((char *) entdata->host_addr,
-                          (char *) entdata->host_addr);
-       else if (af == AF_INET
-               && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
-        {
-          if (IN6_IS_ADDR_V4MAPPED (entdata->host_addr))
-            memcpy (entdata->host_addr, entdata->host_addr + 12, INADDRSZ);
-          else
-            /* Illegal address: ignore line.  */
-            return 0;
-        }
-       else if (af == AF_UNSPEC
-               && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
-        af = AF_INET6;
-       else
-        /* Illegal address: ignore line.  */
-        return 0;
-     }
+     /* Illegal address: ignore line.  */
+     return 0;
 
    /* We always return entries of the requested form.  */
    result->h_addrtype = af;