about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--nis/nss_compat/compat-initgroups.c12
-rw-r--r--sysdeps/posix/getaddrinfo.c43
3 files changed, 33 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog
index e61eaa9444..02b52c3d07 100644
--- 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.
diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c
index cea561ddc4..100febc672 100644
--- a/nis/nss_compat/compat-initgroups.c
+++ b/nis/nss_compat/compat-initgroups.c
@@ -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
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 2d89b4ad5f..132fdcc620 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -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;