mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Return failure in getnetgrent only when all netgroups have been searched (#17363)
The netgroups lookup code fails when one of the groups in the search tree is empty. In such a case it only returns the leaves of the tree after the blank netgroup. This is because the line parser returns a NOTFOUND status when the netgroup exists but is empty. The __getnetgrent_internal implementation needs to be fixed to try remaining groups if the current group is entry. This patch implements this fix. Tested on x86_64. [BZ #17363] * inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next group if the current group is empty.
This commit is contained in:
parent
71ae86478e
commit
58b930ae21
@ -1,3 +1,9 @@
|
||||
2014-09-10 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
[BZ #17363]
|
||||
* inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next
|
||||
group if the current group is empty.
|
||||
|
||||
2014-09-10 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* benchtests/bench-memset.c (test_main): Add more test from size
|
||||
|
6
NEWS
6
NEWS
@ -5,6 +5,12 @@ See the end for copying conditions.
|
||||
Please send GNU C library bug reports via <http://sourceware.org/bugzilla/>
|
||||
using `glibc' in the "product" field.
|
||||
|
||||
Version 2.21
|
||||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
17363.
|
||||
|
||||
Version 2.20
|
||||
|
||||
* The following bugs are resolved with this release:
|
||||
|
@ -297,7 +297,10 @@ __internal_getnetgrent_r (char **hostp, char **userp, char **domainp,
|
||||
{
|
||||
status = DL_CALL_FCT (*fct, (datap, buffer, buflen, &errno));
|
||||
|
||||
if (status == NSS_STATUS_RETURN)
|
||||
if (status == NSS_STATUS_RETURN
|
||||
/* The service returned a NOTFOUND, but there are more groups that we
|
||||
need to resolve before we give up. */
|
||||
|| (status == NSS_STATUS_NOTFOUND && datap->needed_groups != NULL))
|
||||
{
|
||||
/* This was the last one for this group. Look at next group
|
||||
if available. */
|
||||
|
Loading…
Reference in New Issue
Block a user