This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.12-259-g70181fd


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  70181fddf1467996bea393d13294ffe76b8a0853 (commit)
      from  794c3ad3a405697e2663b00f616e319383b9bb7d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=70181fddf1467996bea393d13294ffe76b8a0853

commit 70181fddf1467996bea393d13294ffe76b8a0853
Author: Ulrich Drepper <drepper@gmail.com>
Date:   Fri Jan 14 08:42:11 2011 -0500

    Change setgroups to affect all the threads in the process.

diff --git a/ChangeLog b/ChangeLog
index 59d1a94..08c3535 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2011-01-14  Ulrich Drepper  <drepper@gmail.com>
 
+	[BZ #10563]
+	* sysdeps/unix/sysv/linux/i386/setgroups.c: Use INLINE_SETXID_SYSCALL
+	to make the syscall.
+	* sysdeps/unix/sysv/linux/setgroups.c: New file.
+
 	[BZ #12378]
 	* posix/fnmatch_loop.c (FCT): When matching '[' keep track of beginning
 	and fall back to matching as normal character if the string ends before
diff --git a/NEWS b/NEWS
index 5e5b7aa..01984f6 100644
--- a/NEWS
+++ b/NEWS
@@ -9,10 +9,11 @@ Version 2.13
 
 * The following bugs are resolved with this release:
 
-  3268, 7066, 10085, 10484, 10851, 11149, 11155, 11611, 11640, 11655, 11701,
-  11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005, 12037, 12067,
-  12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140, 12159, 12167,
-  12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378, 12394, 12397
+  3268, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11611, 11640, 11655,
+  11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005, 12037,
+  12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140, 12159,
+  12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378, 12394,
+  12397
 
 * New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
 
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 22b8208..f3a2753 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,10 @@
+2011-01-14  Ulrich Drepper  <drepper@gmail.com>
+
+	[BZ #10563]
+	* sysdeps/pthread/setxid.h (__SETXID_1): Add cast to assignment.
+	(__SETXID_2): Likewise.
+	(__SETXID_3): Likewise.
+
 2011-01-13  Ulrich Drepper  <drepper@gmail.com>
 
 	[BZ #10484]
diff --git a/nptl/sysdeps/pthread/setxid.h b/nptl/sysdeps/pthread/setxid.h
index aebdbd2..043ffd2 100644
--- a/nptl/sysdeps/pthread/setxid.h
+++ b/nptl/sysdeps/pthread/setxid.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2007, 2011 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -20,11 +20,11 @@
 #include <sysdep.h>
 
 #define __SETXID_1(cmd, arg1) \
-  cmd.id[0] = arg1
+  cmd.id[0] = (long int) arg1
 #define __SETXID_2(cmd, arg1, arg2) \
-  __SETXID_1 (cmd, arg1); cmd.id[1] = arg2
+  __SETXID_1 (cmd, arg1); cmd.id[1] = (long int) arg2
 #define __SETXID_3(cmd, arg1, arg2, arg3) \
-  __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = arg3
+  __SETXID_2 (cmd, arg1, arg2); cmd.id[2] = (long int) arg3
 
 #ifdef SINGLE_THREAD
 # define INLINE_SETXID_SYSCALL(name, nr, args...) \
diff --git a/sysdeps/unix/sysv/linux/i386/setgroups.c b/sysdeps/unix/sysv/linux/i386/setgroups.c
index 10f5b7c..42f7702 100644
--- a/sysdeps/unix/sysv/linux/i386/setgroups.c
+++ b/sysdeps/unix/sysv/linux/i386/setgroups.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1997,1998,2000,2002,2004,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1997,1998,2000,2002,2004,2006,2011
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -25,6 +26,7 @@
 #include <sys/syscall.h>
 #include <bp-checks.h>
 
+#include <setxid.h>
 #include <linux/posix_types.h>
 #include <kernel-features.h>
 
@@ -44,7 +46,7 @@ int
 setgroups (size_t n, const gid_t *groups)
 {
 #if __ASSUME_32BITUIDS > 0
-  return INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n));
+  return INLINE_SETXID_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n));
 #else
   if (n > (size_t) __sysconf (_SC_NGROUPS_MAX))
     {
@@ -62,7 +64,8 @@ setgroups (size_t n, const gid_t *groups)
 	  int result;
 	  int saved_errno = errno;
 
-	  result = INLINE_SYSCALL (setgroups32, 2, n, CHECK_N (groups, n));
+	  result = INLINE_SETXID_SYSCALL (setgroups32, 2, n,
+					  CHECK_N (groups, n));
 	  if (result == 0 || errno != ENOSYS)
 	    return result;
 
@@ -80,7 +83,8 @@ setgroups (size_t n, const gid_t *groups)
 	    }
 	}
 
-      return INLINE_SYSCALL (setgroups, 2, n, CHECK_N (kernel_groups, n));
+      return INLINE_SETXID_SYSCALL (setgroups, 2, n,
+				    CHECK_N (kernel_groups, n));
     }
 #endif
 }
diff --git a/sysdeps/unix/sysv/linux/setgroups.c b/sysdeps/unix/sysv/linux/setgroups.c
new file mode 100644
index 0000000..9649974
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/setgroups.c
@@ -0,0 +1,37 @@
+/* Copyright (C) 1997,1998,2000,2002,2004,2006,2011
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <grp.h>
+#include <setxid.h>
+#include <sysdep.h>
+
+
+/* Set the group set for the current user to GROUPS (N of them).  For
+   Linux we must convert the array of groups into the format that the
+   kernel expects.  */
+int
+setgroups (size_t n, const gid_t *groups)
+{
+#ifdef __NR_setgroups32
+# error "wrong setgroups.c file used"
+#endif
+  return INLINE_SETXID_SYSCALL (setgroups, 2, n, groups);
+}
+libc_hidden_def (setgroups)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                    |    5 +++++
 NEWS                                         |    9 +++++----
 nptl/ChangeLog                               |    7 +++++++
 nptl/sysdeps/pthread/setxid.h                |    8 ++++----
 sysdeps/unix/sysv/linux/i386/setgroups.c     |   12 ++++++++----
 {grp => sysdeps/unix/sysv/linux}/setgroups.c |   24 +++++++++++++-----------
 6 files changed, 42 insertions(+), 23 deletions(-)
 copy {grp => sysdeps/unix/sysv/linux}/setgroups.c (70%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]