Skip to content

Commit

Permalink
* nscd/initgrcache.c (addinitgroupsX): Judge successful lookups by
Browse files Browse the repository at this point in the history
	status of NSS calls, not the number of returned entries.
  • Loading branch information
Ulrich Drepper committed Aug 2, 2006
1 parent a451892 commit fbbc73b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 8 deletions.
3 changes: 3 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
2006-08-01 Ulrich Drepper <drepper@redhat.com>

* nscd/initgrcache.c (addinitgroupsX): Judge successful lookups by
status of NSS calls, not the number of returned entries.

* sysdeps/unix/sysv/linux/syscalls.list: Remove add_key,
request_key, keyctl.

Expand Down
14 changes: 7 additions & 7 deletions nptl/sysdeps/unix/sysv/linux/i386/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,25 @@ is_smp_system (void)
{
union
{
struct utsname uts;
struct utsname uts;
char buf[512];
};
} u;
char *cp;

/* Try reading the number using `sysctl' first. */
if (uname (&uts) == 0)
cp = uts.version;
if (uname (&u.uts) == 0)
cp = u.uts.version;
else
{
/* This was not successful. Now try reading the /proc filesystem. */
int fd = open_not_cancel_2 ("/proc/sys/kernel/version", O_RDONLY);
if (__builtin_expect (fd, 0) == -1
|| (reslen = read_not_cancel (fd, buf, sizeof (buf))) <= 0)
|| read_not_cancel (fd, u.buf, sizeof (u.buf)) <= 0)
/* This also didn't work. We give up and say it's a UP machine. */
buf[0] = '\0';
u.buf[0] = '\0';

close_not_cancel_no_status (fd);
cp = buf;
cp = u.buf;
}

return strstr (cp, "SMP") != NULL;
Expand Down
5 changes: 4 additions & 1 deletion nscd/initgrcache.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
goto out;

/* Nothing added yet. */
bool any_success = false;
while (! no_more)
{
long int prev_start = start;
Expand Down Expand Up @@ -158,6 +159,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN)
__libc_fatal ("illegal status in internal_getgrouplist");

any_success |= status == NSS_STATUS_SUCCESS;

if (status != NSS_STATUS_SUCCESS
&& nss_next_action (nip, status) == NSS_ACTION_RETURN)
break;
Expand All @@ -171,7 +174,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req,
ssize_t total;
ssize_t written;
out:
if (start == 0)
if (!any_success)
{
/* Nothing found. Create a negative result record. */
written = total = sizeof (notfound);
Expand Down

0 comments on commit fbbc73b

Please sign in to comment.