]> sourceware.org Git - glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 16 Feb 2004 18:48:51 +0000 (18:48 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 16 Feb 2004 18:48:51 +0000 (18:48 +0000)
2004-02-16  Ulrich Drepper  <drepper@redhat.com>

* sysdeps/posix/getaddrinfo.c (match_prefix): Correctly match
partial bytes.

ChangeLog
sysdeps/posix/getaddrinfo.c

index be57e291c56deb09239add34f1554cf2a4998a2e..a956848653b62c66f391faf0b56cd34f19064cb2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-16  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/posix/getaddrinfo.c (match_prefix): Correctly match
+       partial bytes.
+
 2004-02-13  Steven Munroe  <sjmunroe@us.ibm.com>
 
        * sysdeps/powerpc/powerpc64/__longjmp-common.S: New file.
index 4885a53118220c25bf6cdf2f08d19c3325f342da..372bc9de4a7a516f8664db6ad4b1ea057fa4e3df 100644 (file)
@@ -62,6 +62,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #define UNIX_PATH_MAX  108
 #endif
 
+extern int idna_to_ascii_lz (const char *input, char **output, int flags);
+#define IDNA_SUCCESS 0
+#ifdef HAVE_LIBIDN
+# define SUPPORTED_IDN_FLAGS AI_IDN|AI_CANONIDN
+#else
+# define SUPPORTED_IDN_FLAGS 0
+#endif
+
 struct gaih_service
   {
     const char *name;
@@ -539,6 +547,18 @@ gaih_inet (const char *name, const struct gaih_service *service,
       at->scopeid = 0;
       at->next = NULL;
 
+#if 0
+      if (req->ai_flags & AI_IDN)
+       {
+         char *p;
+         rc = idna_to_ascii_lz (name, &p, 0);
+         if (rc != IDNA_SUCCESS)
+           return -EAI_IDN_ENCODE;
+         name = strdupa (p);
+         free (p);
+       }
+#endif
+
       if (inet_pton (AF_INET, name, at->addr) > 0)
        {
          if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET)
@@ -1049,7 +1069,7 @@ match_prefix (const struct sockaddr_storage *ss, const struct prefixlist *list,
 
       if (bits < 8)
        {
-         if ((*mask & (0xff >> bits)) == (*val & (0xff >> bits)))
+         if ((*mask & (0xff00 >> bits)) == (*val & (0xff00 >> bits)))
            /* Match!  */
            break;
        }
@@ -1250,10 +1270,10 @@ getaddrinfo (const char *name, const char *service,
 
   if (hints->ai_flags
       & ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST|AI_ADDRCONFIG|AI_V4MAPPED
-         |AI_ALL))
+         |SUPPORTED_IDN_FLAGS|AI_ALL))
     return EAI_BADFLAGS;
 
-  if ((hints->ai_flags & AI_CANONNAME) && name == NULL)
+  if ((hints->ai_flags & (AI_CANONNAME|AI_CANONIDN)) && name == NULL)
     return EAI_BADFLAGS;
 
   if (hints->ai_flags & AI_ADDRCONFIG)
This page took 0.059667 seconds and 5 git commands to generate.