Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 19 Aug 2004 21:39:39 +0000 (21:39 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 19 Aug 2004 21:39:39 +0000 (21:39 +0000)
* sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use
getcanonname_r function if AI_CANONNAME flag is not set in
request.

ChangeLog
nis/nss_compat/compat-initgroups.c
sysdeps/posix/getaddrinfo.c

index e61eaa9..02b52c3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2004-08-19  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/posix/getaddrinfo.c (gaih_inet): Don't use
+       getcanonname_r function if AI_CANONNAME flag is not set in
+       request.
+
        * nis/nss_compat/compat-initgroups.c (getgrent_next_nss):
        Initialize mysize with limits only if latter is >= 0.  Use mysize
        in malloc call.
index cea561d..100febc 100644 (file)
@@ -243,9 +243,9 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
     {
       long int mystart = 0;
       long int mysize = limit <= 0 ? *size : limit;
-      gid_t *mygroupsp = malloc (mysize * sizeof (gid_t));
+      gid_t *mygroups = malloc (mysize * sizeof (gid_t));
 
-      if (mygroupsp == NULL)
+      if (mygroups == NULL)
        return NSS_STATUS_TRYAGAIN;
 
       /* For every gid in the list we get from the NSS module,
@@ -255,7 +255,7 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
          getgrent_r through the whole group database. But for large
          group databases this is faster, since the user can only be
          in a limited number of groups.  */
-      if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroupsp,
+      if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroups,
                              limit, errnop) == NSS_STATUS_SUCCESS)
        {
          /* A temporary buffer. We use the normal buffer, until we find
@@ -267,7 +267,7 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
 
          for (i = 0; i < mystart; i++)
            {
-             while ((status = nss_getgrgid_r (mygroupsp[i], &grpbuf, tmpbuf,
+             while ((status = nss_getgrgid_r (mygroups[i], &grpbuf, tmpbuf,
                                               tmplen,
                                               errnop)) == NSS_STATUS_TRYAGAIN
                     && *errnop == ERANGE)
@@ -285,12 +285,12 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
                                     limit, &grpbuf);
            }
 
-         free (mygroupsp);
+         free (mygroups);
 
          return NSS_STATUS_NOTFOUND;
        }
 
-      free (mygroupsp);
+      free (mygroups);
     }
 
   /* If we come here, the NSS module does not support initgroups_dyn
index 2d89b4a..132fdcc 100644 (file)
@@ -644,27 +644,30 @@ gaih_inet (const char *name, const struct gaih_service *service,
                  if (inet6_status == NSS_STATUS_SUCCESS
                      || status == NSS_STATUS_SUCCESS)
                    {
-                     /* If we need the canonical name, get it from the same
-                        service as the result.  */
-                     nss_getcanonname_r cfct;
-                     int herrno;
-
-                     cfct = __nss_lookup_function (nip, "getcanonname_r");
-                     if (cfct != NULL)
+                     if ((req->ai_flags & AI_CANONNAME) != 0)
                        {
-                         const size_t max_fqdn_len = 256;
-                         char *buf = alloca (max_fqdn_len);
-                         char *s;
-
-                         if (DL_CALL_FCT (cfct, (h->h_name ?: name, buf,
-                                                 max_fqdn_len, &s, &rc,
-                                                 &herrno))
-                             == NSS_STATUS_SUCCESS)
-                           canon = s;
-                         else
-                           /* Set to name now to avoid using
-                              gethostbyaddr.  */
-                           canon = name;
+                         /* If we need the canonical name, get it
+                            from the same service as the result.  */
+                         nss_getcanonname_r cfct;
+                         int herrno;
+
+                         cfct = __nss_lookup_function (nip, "getcanonname_r");
+                         if (cfct != NULL)
+                           {
+                             const size_t max_fqdn_len = 256;
+                             char *buf = alloca (max_fqdn_len);
+                             char *s;
+
+                             if (DL_CALL_FCT (cfct, (h->h_name ?: name, buf,
+                                                     max_fqdn_len, &s, &rc,
+                                                     &herrno))
+                                 == NSS_STATUS_SUCCESS)
+                               canon = s;
+                             else
+                               /* Set to name now to avoid using
+                                  gethostbyaddr.  */
+                               canon = name;
+                           }
                        }
 
                      break;