mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-12 14:21:18 +08:00
2005-02-07 Jakub Jelinek <jakub@redhat.com>
[BZ #741] * nscd/nscd_getai.c (__nscd_getai): If ai_resp->found == -1, set __nss_not_use_nscd_hosts and return -1. * nscd/nscd_initgroups.c (__nscd_getgrouplist): If initgr_resp->found == -1, set __nss_not_use_nscd_group and return -1. Avoid leaking sockets.
This commit is contained in:
parent
694069d2fe
commit
eae6a0b0ef
@ -78,7 +78,7 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
|
||||
sizeof (ai_resp_mem));
|
||||
if (sock == -1)
|
||||
{
|
||||
/* nscd not running or wrong version or hosts caching disabled. */
|
||||
/* nscd not running or wrong version. */
|
||||
__nss_not_use_nscd_hosts = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -151,6 +151,13 @@ __nscd_getai (const char *key, struct nscd_ai_result **result, int *h_errnop)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (__builtin_expect (ai_resp->found == -1, 0))
|
||||
{
|
||||
/* The daemon does not cache this database. */
|
||||
__nss_not_use_nscd_hosts = 1;
|
||||
goto out_close;
|
||||
}
|
||||
|
||||
/* Store the error number. */
|
||||
*h_errnop = ai_resp->error;
|
||||
|
||||
|
@ -75,7 +75,7 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
|
||||
sizeof (initgr_resp_mem));
|
||||
if (sock == -1)
|
||||
{
|
||||
/* nscd not running or wrong version or hosts caching disabled. */
|
||||
/* nscd not running or wrong version. */
|
||||
__nss_not_use_nscd_group = 1;
|
||||
goto out;
|
||||
}
|
||||
@ -101,7 +101,7 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
|
||||
(initgr_resp->ngrps + 1) * sizeof (gid_t));
|
||||
if (newp == NULL)
|
||||
/* We cannot increase the buffer size. */
|
||||
goto out;
|
||||
goto out_close;
|
||||
|
||||
*groupsp = newp;
|
||||
*size = initgr_resp->ngrps + 1;
|
||||
@ -125,6 +125,13 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (__builtin_expect (initgr_resp->found == -1, 0))
|
||||
{
|
||||
/* The daemon does not cache this database. */
|
||||
__nss_not_use_nscd_group = 1;
|
||||
goto out_close;
|
||||
}
|
||||
|
||||
/* No group found yet. */
|
||||
retval = 0;
|
||||
|
||||
@ -143,6 +150,7 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size,
|
||||
(*groupsp)[retval++] = group;
|
||||
}
|
||||
|
||||
out_close:
|
||||
if (sock != -1)
|
||||
close_not_cancel_no_status (sock);
|
||||
out:
|
||||
|
Loading…
x
Reference in New Issue
Block a user