about summary refs log tree commit diff
path: root/nss/nss_db/db-XXX.c
diff options
context:
space:
mode:
Diffstat (limited to 'nss/nss_db/db-XXX.c')
-rw-r--r--nss/nss_db/db-XXX.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/nss/nss_db/db-XXX.c b/nss/nss_db/db-XXX.c
index 62c7a251f1..3839940028 100644
--- a/nss/nss_db/db-XXX.c
+++ b/nss/nss_db/db-XXX.c
@@ -282,6 +282,14 @@ CONCAT(_nss_db_get,ENTNAME_r) (struct STRUCTURE *result, char *buffer,
     {
       key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
       status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG);
+      if (status == NSS_STATUS_TRYAGAIN
+#ifdef NEED_H_ERRNO
+	  && *herrnop == NETDB_INTERNAL
+#endif
+	  && *errnop == ERANGE)
+	/* Give the user a chance to get the same entry with a larger
+	   buffer.  */
+	--entidx;
     }
   while (status == NSS_STATUS_RETURN);