]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
* nis/nss_compat/compat-grp.c (internal_getgrgid_r): Don't
authorJakub Jelinek <jakub@redhat.com>
Fri, 12 Jan 2007 17:59:51 +0000 (17:59 +0000)
committerJakub Jelinek <jakub@redhat.com>
Fri, 12 Jan 2007 17:59:51 +0000 (17:59 +0000)
blacklist the group till after we look it up.

ChangeLog
nis/nss_compat/compat-grp.c

index f5596363447dd5b0e728c62de147c64864907c1e..0afd09566b38791a0a751518bf0c899dd9508b66 100644 (file)
--- 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.
index f2f7195be1ffa3dd67653380cef018e2d92f1595..236c84a20fb9bd68bcf4b7abec8a36865b7600ac 100644 (file)
@@ -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