mirror of git://sourceware.org/git/glibc.git
Return proper status from _nss_nis_initgroups_dyn (bug 20262)
This commit is contained in:
parent
3631c9742a
commit
73fb56a4d5
|
@ -1,3 +1,10 @@
|
||||||
|
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>
|
2016-06-29 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
[BZ #18645]
|
[BZ #18645]
|
||||||
|
|
|
@ -266,7 +266,7 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||||
|
|
||||||
tmpbuf = __alloca (buflen);
|
tmpbuf = __alloca (buflen);
|
||||||
|
|
||||||
do
|
while (1)
|
||||||
{
|
{
|
||||||
while ((status =
|
while ((status =
|
||||||
internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop,
|
internal_getgrent_r (&grpbuf, tmpbuf, buflen, errnop,
|
||||||
|
@ -275,8 +275,11 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||||
tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
|
tmpbuf = extend_alloca (tmpbuf, buflen, 2 * buflen);
|
||||||
|
|
||||||
if (status != NSS_STATUS_SUCCESS)
|
if (status != NSS_STATUS_SUCCESS)
|
||||||
|
{
|
||||||
|
if (status == NSS_STATUS_NOTFOUND)
|
||||||
|
status = NSS_STATUS_SUCCESS;
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
g = &grpbuf;
|
g = &grpbuf;
|
||||||
if (g->gr_gid != group)
|
if (g->gr_gid != group)
|
||||||
|
@ -304,7 +307,11 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||||
|
|
||||||
newgroups = realloc (groups, newsize * sizeof (*groups));
|
newgroups = realloc (groups, newsize * sizeof (*groups));
|
||||||
if (newgroups == NULL)
|
if (newgroups == NULL)
|
||||||
|
{
|
||||||
|
status = NSS_STATUS_TRYAGAIN;
|
||||||
|
*errnop = errno;
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
*groupsp = groups = newgroups;
|
*groupsp = groups = newgroups;
|
||||||
*size = newsize;
|
*size = newsize;
|
||||||
}
|
}
|
||||||
|
@ -316,7 +323,6 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (status == NSS_STATUS_SUCCESS);
|
|
||||||
|
|
||||||
done:
|
done:
|
||||||
while (intern.start != NULL)
|
while (intern.start != NULL)
|
||||||
|
|
Loading…
Reference in New Issue