Skip to content

Commit

Permalink
2005-02-07 Jakub Jelinek <jakub@redhat.com>
Browse files Browse the repository at this point in the history
	[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.
  • Loading branch information
Roland McGrath committed Feb 16, 2005
1 parent 694069d commit eae6a0b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 3 deletions.
9 changes: 8 additions & 1 deletion nscd/nscd_getai.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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;

Expand Down
12 changes: 10 additions & 2 deletions nscd/nscd_initgroups.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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;
Expand All @@ -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;

Expand All @@ -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:
Expand Down

0 comments on commit eae6a0b

Please sign in to comment.