about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--grp/initgroups.c11
-rw-r--r--resolv/res_send.c2
3 files changed, 7 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 4decd23559..fc587e00f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2008-10-30  Ulrich Drepper  <drepper@redhat.com>
 
+	* grp/initgroups.c (internal_getgrouplist): Don't prematurely
+	abort if there is no initgroups_dyn function.
+
 	* resolv/res_send.c (send_dg): On timeout, only return nonzero
 	result if any of the queries really provided an answer.
 
diff --git a/grp/initgroups.c b/grp/initgroups.c
index 2e489463df..cab63e52bf 100644
--- a/grp/initgroups.c
+++ b/grp/initgroups.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1989,91,93,1996-2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1989,91,93,1996-2005,2006,2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -94,13 +94,8 @@ internal_getgrouplist (const char *user, gid_t group, long int *size,
       fct = __nss_lookup_function (nip, "initgroups_dyn");
 
       if (fct == NULL)
-	{
-	  status = compat_call (nip, user, group, &start, size, groupsp,
-				limit, &errno);
-
-	  if (nss_next_action (nip, NSS_STATUS_UNAVAIL) != NSS_ACTION_CONTINUE)
-	    break;
-	}
+	status = compat_call (nip, user, group, &start, size, groupsp,
+			      limit, &errno);
       else
 	status = DL_CALL_FCT (fct, (user, group, &start, size, groupsp,
 				    limit, &errno));
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 7c3d620fb6..8f0a6018b6 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -1008,7 +1008,7 @@ send_dg(res_state statp,
 	}
 	if (n == 0) {
 		Dprint(statp->options & RES_DEBUG, (stdout, ";; timeout\n"));
-		if (recvresp1 > 1 || (buf2 != NULL && recvresp2 > 1))
+		if (resplen > 1 && (recvresp1 || (buf2 != NULL && recvresp2)))
 		  {
 		    *resplen2 = 1;
 		    return resplen;