]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Updated to fedora-glibc-20060831T0640 cvs/fedora-glibc-2_4_90-27
authorJakub Jelinek <jakub@redhat.com>
Thu, 31 Aug 2006 06:53:32 +0000 (06:53 +0000)
committerJakub Jelinek <jakub@redhat.com>
Thu, 31 Aug 2006 06:53:32 +0000 (06:53 +0000)
18 files changed:
ChangeLog
elf/dl-load.c
elf/dl-open.c
fedora/branch.mk
fedora/glibc.spec.in
nptl/ChangeLog
nptl/pthread_rwlock_trywrlock.c
nptl/sysdeps/pthread/pthread_rwlock_timedwrlock.c
nptl/sysdeps/pthread/pthread_rwlock_wrlock.c
sysdeps/unix/sysv/linux/alpha/bits/fcntl.h
sysdeps/unix/sysv/linux/i386/bits/fcntl.h
sysdeps/unix/sysv/linux/ia64/bits/fcntl.h
sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h
sysdeps/unix/sysv/linux/s390/bits/fcntl.h
sysdeps/unix/sysv/linux/sh/bits/fcntl.h
sysdeps/unix/sysv/linux/sparc/bits/fcntl.h
sysdeps/unix/sysv/linux/syscalls.list
sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h

index 2f46b1e40852b79568c4493f729c3ed28fd32063..a75ac8b23b17ec77aee6ef59710ebb3630dc8207 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2006-08-30  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/alpha/bits/fcntl.h (splice): Add offin
+       and offout arguments to the prototype.
+       * sysdeps/unix/sysv/linux/s390/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/sh/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/i386/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/ia64/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/bits/fcntl.h (splice): Likewise.
+       * sysdeps/unix/sysv/linux/syscalls.list (splice): Adjust args string.
+
+2006-08-28  Ulrich Drepper  <drepper@redhat.com>
+
+       * elf/dl-load.c (_dl_init_paths): Expand DSTs.
+
+       * elf/dl-open.c (dl_open_worker): Allow $LIB and $PLATFORM in
+       dlopen parameters.
+
 2006-08-28  Jakub Jelinek  <jakub@redhat.com>
 
        * inet/getnameinfo.c (getnameinfo): For AF_INET, check errno
index 902ffc4109d948a7046c4ae13021ede7e8587443..36dc123c0131d2964129624a4ddb59e81c48b5e8 100644 (file)
@@ -749,7 +749,25 @@ _dl_init_paths (const char *llp)
     {
       size_t nllp;
       const char *cp = llp;
-      char *llp_tmp = strdupa (llp);
+      char *llp_tmp;
+
+#ifdef SHARED
+      /* Expand DSTs.  */
+      size_t cnt = DL_DST_COUNT (llp, 1);
+      if (__builtin_expect (cnt == 0, 1))
+       llp_tmp = strdupa (llp);
+      else
+       {
+         /* Determine the length of the substituted string.  */
+         size_t total = DL_DST_REQUIRED (l, llp, strlen (llp), cnt);
+
+         /* Allocate the necessary memory.  */
+         llp_tmp = (char *) alloca (total + 1);
+         llp_tmp = _dl_dst_substitute (l, llp, llp_tmp, 1);
+       }
+#else
+      llp_tmp = strdupa (llp);
+#endif
 
       /* Decompose the LD_LIBRARY_PATH contents.  First determine how many
         elements it has.  */
index cdbb6601d2ff6d236f639637571528a151721be4..8d057f82eb923c7eee6fb5f30f20325d29d17f6f 100644 (file)
@@ -221,13 +221,6 @@ dl_open_worker (void *a)
       size_t required;
       char *new_file;
 
-      /* DSTs must not appear in SUID/SGID programs.  */
-      if (INTUSE(__libc_enable_secure))
-       /* This is an error.  */
-       _dl_signal_error (0, "dlopen", NULL,
-                         N_("DST not allowed in SUID/SGID programs"));
-
-
       /* Determine how much space we need.  We have to allocate the
         memory locally.  */
       required = DL_DST_REQUIRED (call_map, file, len, _dl_dst_count (dst, 0));
index 7e4461da37b817a68ddf38ac934c68743cb92c5e..32a0feccd124bcdbad25e2aaf6aaeb519c7b281b 100644 (file)
@@ -3,5 +3,5 @@ glibc-branch := fedora
 glibc-base := HEAD
 DIST_BRANCH := devel
 COLLECTION := dist-fc4
-fedora-sync-date := 2006-08-28 19:03 UTC
-fedora-sync-tag := fedora-glibc-20060828T1903
+fedora-sync-date := 2006-08-31 06:40 UTC
+fedora-sync-tag := fedora-glibc-20060831T0640
index 2674d2b56493702be62f28f0a9908d9ddc948f8f..519c50d449ebb6bc01cf88ee220210f9a05b6ca2 100644 (file)
@@ -1,4 +1,4 @@
-%define glibcrelease 26
+%define glibcrelease 27
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define xenarches i686 athlon
 %ifarch %{xenarches}
@@ -1448,6 +1448,12 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Thu Aug 31 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-27
+- allow $LIB and $PLATFORM in dlopen parameters even in suid/sgid (#204399)
+- fix splice prototype (#204530)
+- fix pthread_rwlock_{,try,timed}wrlock to honor reader preference
+  if requested
+
 * Mon Aug 28 2006 Jakub Jelinek <jakub@redhat.com> 2.4.90-26
 - real fix for the doubly linked list corruption problem
 - try harder in realloc to allocate memory (BZ#2684)
index eb4680d15908cf00529c70893547947f8dfb0127..2c9c9e2732a9fcd2e6c3781593f0ea9facdc271e 100644 (file)
@@ -1,3 +1,12 @@
+2006-08-30  Ulrich Drepper  <drepper@redhat.com>
+
+       * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Respect
+       reader preference.
+       * sysdeps/pthread/pthread_rwlock_timedwrlock.c
+       (pthread_rwlock_timedwrlock): Likewise.
+       * sysdeps/pthread/pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock):
+       Likewise.
+
 2006-08-25  Jakub Jelinek  <jakub@redhat.com>
 
        * sysdeps/unix/sysv/linux/libc_pthread_init.c (freeres_libpthread):
index b754a1956549c85b69b6fa2d8c80b519be7caa6b..63760064c5d6f1b13639b3a097dd40b19d6ffdce 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -30,7 +30,10 @@ __pthread_rwlock_trywrlock (rwlock)
 
   lll_mutex_lock (rwlock->__data.__lock);
 
-  if (rwlock->__data.__writer == 0 && rwlock->__data.__nr_readers == 0)
+  if (rwlock->__data.__writer == 0 && rwlock->__data.__nr_readers == 0
+      /* Respect the preference.  */
+      && (rwlock->__data.__flags != 0
+         || rwlock->__data.__nr_readers_queued == 0))
     {
       rwlock->__data.__writer = THREAD_GETMEM (THREAD_SELF, tid);
       result = 0;
index 97c0598f96f9866558e493799269559572a8262f..ab7bc7babbcaa9427970ee2e670e4cbe3b2114a7 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
 
@@ -40,7 +40,9 @@ pthread_rwlock_timedwrlock (rwlock, abstime)
       int err;
 
       /* Get the rwlock if there is no writer and no reader.  */
-      if (rwlock->__data.__writer == 0 && rwlock->__data.__nr_readers == 0)
+      if (rwlock->__data.__writer == 0 && rwlock->__data.__nr_readers == 0
+         && (rwlock->__data.__flags != 0
+             || rwlock->__data.__nr_readers_queued == 0))
        {
          /* Mark self as writer.  */
          rwlock->__data.__writer = THREAD_GETMEM (THREAD_SELF, tid);
index 822aeed79c77dd525eefb3d5a4d481ae1f6875d4..4d967f2496debd5b9e5acc56dddf2855220201e8 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
 
@@ -37,7 +37,9 @@ __pthread_rwlock_wrlock (rwlock)
   while (1)
     {
       /* Get the rwlock if there is no writer and no reader.  */
-      if (rwlock->__data.__writer == 0 && rwlock->__data.__nr_readers == 0)
+      if (rwlock->__data.__writer == 0 && rwlock->__data.__nr_readers == 0
+         && (rwlock->__data.__flags != 0
+             || rwlock->__data.__nr_readers_queued == 0))
        {
          /* Mark self as writer.  */
          rwlock->__data.__writer = THREAD_GETMEM (THREAD_SELF, tid);
index 6084c38c91c33d87de5c3ad6689e8d69ff189bf6..f17dc2bdc11d1cfb65588aa9634a45f95bf27afe 100644 (file)
@@ -216,7 +216,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index 1f7ac0f25a3dc47a0dc39aac1f21344d1bcdb271..6de33302ee174ee700f92cdc0594e4b470f3ccd1 100644 (file)
@@ -224,7 +224,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index ef66d465dedb84ae28a8ad013b8d3b1db0e85bd0..ed8c2da9e24a2ec81d3d888a32343d5b4ffcd5ae 100644 (file)
@@ -218,7 +218,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index 57fc7bd987ca114aacc48cc724dbcfd3a9876930..c4964e0fd879945b816b7687c409e42ca70e7fcd 100644 (file)
@@ -224,7 +224,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index e5a917dbfa40df5a6c4b5f8ac5f8e2e2f68f5ad6..c611028f2957e82ccc98ae2ecd1890854cd6c526 100644 (file)
@@ -244,7 +244,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index 1f7ac0f25a3dc47a0dc39aac1f21344d1bcdb271..6de33302ee174ee700f92cdc0594e4b470f3ccd1 100644 (file)
@@ -224,7 +224,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index a965d31654b80e672f562ccfcfc9b7dfdbe5267e..d68bfeb0ef962b8cda548bda173438cf6d7b23dc 100644 (file)
@@ -243,7 +243,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */
index afb6d809781a1b9270141401ad83e7bd36da25e5..fca29b26ff86bd7e337945c14ea1689155fce478 100644 (file)
@@ -67,7 +67,7 @@ setfsgid      EXTRA   setfsgid        i:i     setfsgid
 setfsuid       EXTRA   setfsuid        i:i     setfsuid
 setpgid                -       setpgid         i:ii    __setpgid       setpgid
 sigaltstack    -       sigaltstack     i:PP    __sigaltstack   sigaltstack
-splice         EXTRA   splice          i:iiii  splice
+splice         EXTRA   splice          i:iPiPii        splice
 sysinfo                EXTRA   sysinfo         i:p     sysinfo
 swapon         -       swapon          i:si    __swapon        swapon
 swapoff                -       swapoff         i:s     __swapoff       swapoff
index 4f10f22224395d3e38433acc62b8db7a2bd05da1..fa1d02bc1fbeb6e170d9a72c4103681740b402d1 100644 (file)
@@ -238,7 +238,8 @@ extern int vmsplice (int __fdout, const struct iovec *__iov, size_t __count,
                     unsigned int __flags);
 
 /* Splice two files together.  */
-extern int splice (int __fdin, int __fdout, size_t __len, unsigned int __flags)
+extern int splice (int __fdin, __off64_t *__offin, int __fdout,
+                  __off64_t *__offout, size_t __len, unsigned int __flags)
     __THROW;
 
 /* In-kernel implementation of tee for pipe buffers.  */