aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--nis/nss_compat/compat-grp.c6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pthread_kill.c2
3 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 21d0d8e..be6268a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-22 Gavin Romig-Koch <gavin@redhat.com>
+
+ * nis/nss_compat/compat-grp.c (internal_getgrgid_r): Don't
+ blacklist the group till after we look it up.
+
2006-12-21 Ulrich Drepper <drepper@redhat.com>
* include/atomic.h (atomic_forced_read): New macro.
diff --git a/nis/nss_compat/compat-grp.c b/nis/nss_compat/compat-grp.c
index f2f7195..236c84a 100644
--- a/nis/nss_compat/compat-grp.c
+++ b/nis/nss_compat/compat-grp.c
@@ -580,13 +580,17 @@ internal_getgrgid_r (gid_t gid, struct group *result, ent_t *ent,
/* +group */
if (result->gr_name[0] == '+' && result->gr_name[1] != '\0')
{
+ /* Yes, no +1, see the memcpy call below. */
+ size_t len = strlen (result->gr_name);
+ char buf[len];
enum nss_status status;
/* Store the group in the blacklist for the "+" at the end of
/etc/group */
- blacklist_store_name (&result->gr_name[1], ent);
+ memcpy (buf, &result->gr_name[1], len);
status = getgrnam_plusgroup (&result->gr_name[1], result, ent,
buffer, buflen, errnop);
+ blacklist_store_name (buf, ent);
if (status == NSS_STATUS_SUCCESS && result->gr_gid == gid)
break;
else
diff --git a/nptl/sysdeps/unix/sysv/linux/pthread_kill.c b/nptl/sysdeps/unix/sysv/linux/pthread_kill.c
index 259c954..7508936 100644
--- a/nptl/sysdeps/unix/sysv/linux/pthread_kill.c
+++ b/nptl/sysdeps/unix/sysv/linux/pthread_kill.c
@@ -37,7 +37,7 @@ __pthread_kill (threadid, signo)
/* Not a valid thread handle. */
return ESRCH;
- /* Force load of pd->tid into local variable or register. Oherwise
+ /* Force load of pd->tid into local variable or register. Otherwise
if a thread exits between ESRCH test and tgkill, we might return
EINVAL, because pd->tid would be cleared by the kernel. */
pid_t tid = atomic_forced_read (pd->tid);