+2016-06-30 Andreas Schwab <schwab@suse.de>
+
+ [BZ #20262]
+ * nis/nss_nis/nis-initgroups.c (_nss_nis_initgroups_dyn): Return
+ NSS_STATUS_SUCCESS when done. Return NSS_STATUS_TRYAGAIN when out
+ of memory.
+
2016-06-29 H.J. Lu <hongjiu.lu@intel.com>
[BZ #18645]
tmpbuf = __alloca (buflen);
- do
+ while (1)
{
while ((status =
internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop,
tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
if (status != NSS_STATUS_SUCCESS)
- goto done;
-
+ {
+ if (status == NSS_STATUS_NOTFOUND)
+ status = NSS_STATUS_SUCCESS;
+ goto done;
+ }
g = &grpbuf;
if (g->gr_gid != group)
newgroups = realloc (groups, newsize * sizeof (*groups));
if (newgroups == NULL)
- goto done;
+ {
+ status = NSS_STATUS_TRYAGAIN;
+ *errnop = errno;
+ goto done;
+ }
*groupsp = groups = newgroups;
*size = newsize;
}
}
}
}
- while (status == NSS_STATUS_SUCCESS);
done:
while (intern.start != NULL)