From 6d96590587deec027c04fe576f11cff0f445eb32 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 1 Oct 2004 21:37:29 +0000 Subject: Updated to fedora-glibc-20041001T2134 --- ChangeLog | 7 ++++++ fedora/branch.mk | 4 +-- fedora/glibc.spec.in | 7 +++++- nptl/ChangeLog | 3 +++ nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S | 2 +- nscd/nscd_initgroups.c | 29 ++++++++++------------ posix/bug-glob1.c | 12 ++++++--- 7 files changed, 41 insertions(+), 23 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0e6269c659..0f691c3dbd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-10-01 Ulrich Drepper + + * nscd/nscd_initgroups.c (__nscd_getgrouplist): Always add the + group the caller provided unless there is a real problem. + + * posix/bug-glob1.c (prepare): Fix creation of symlink. + 2004-09-30 Ulrich Drepper * posix/Makefile: Add rules to build and run bug-glob1. diff --git a/fedora/branch.mk b/fedora/branch.mk index 763b4cf699..748fba0809 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -1,5 +1,5 @@ # This file is updated automatically by Makefile. glibc-branch := fedora glibc-base := HEAD -fedora-sync-date := 2004-10-01 11:34 UTC -fedora-sync-tag := fedora-glibc-20041001T1134 +fedora-sync-date := 2004-10-01 21:34 UTC +fedora-sync-tag := fedora-glibc-20041001T2134 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index c2c4afea28..7830e73fa2 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 62 +%define glibcrelease 63 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define prelinkarches noarch %define nptlarches i386 i686 athlon x86_64 ia64 s390 s390x sparcv9 ppc ppc64 @@ -1239,6 +1239,11 @@ rm -f *.filelist* %endif %changelog +* Fri Oct 1 2004 Jakub Jelinek 2.3.3-62 +- update from CVS + - fix __nscd_getgrouplist + - fix a typo in x86_64 pthread_mutex_timedwait fix + * Fri Oct 1 2004 Jakub Jelinek 2.3.3-62 - update from CVS - fix NPTL pthread_mutex_timedwait on i386/x86_64 (BZ #417) diff --git a/nptl/ChangeLog b/nptl/ChangeLog index da7d842b36..90c7d5fb21 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,8 @@ 2004-10-01 Ulrich Drepper + * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S + (__lll_mutex_timedlock_wait): Address futex correctly. + * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S (__lll_mutex_timedlock_wait): I woken but cannot get the lock, make sure 2 is stored in the futex and we looked at the old value. diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S index 6827804f7f..d5c9345558 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S @@ -152,7 +152,7 @@ __lll_mutex_timedlock_wait: /* Make sure the current holder knows we are going to sleep. */ movl %edx, %eax - xchgl %eax, (%ebx) + xchgl %eax, (%rdi) testl %eax, %eax jz 6b jmp 1b diff --git a/nscd/nscd_initgroups.c b/nscd/nscd_initgroups.c index ea32ab6bcc..d6cb00000e 100644 --- a/nscd/nscd_initgroups.c +++ b/nscd/nscd_initgroups.c @@ -95,6 +95,7 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size, doesn't use memcpy but instead copies each array element one by one. */ assert (sizeof (int32_t) == sizeof (gid_t)); + assert (initgr_resp->ngrps > 0); /* Make sure we have enough room. We always count GROUP in even though we might not end up adding it. */ @@ -125,25 +126,21 @@ __nscd_getgrouplist (const char *user, gid_t group, long int *size, retval = initgr_resp->ngrps; memcpy (*groupsp, respdata, retval * sizeof (gid_t)); } - - /* Check whether GROUP is part of the mix. If not, add it. */ - if (retval >= 0) - { - int cnt; - for (cnt = 0; cnt < retval; ++cnt) - if ((*groupsp)[cnt] == group) - break; - - if (cnt == retval) - (*groupsp)[retval++] = group; - } } else + /* No group found yet. */ + retval = 0; + + /* Check whether GROUP is part of the mix. If not, add it. */ + if (retval >= 0) { - /* The `errno' to some value != ERANGE. */ - __set_errno (ENOENT); - /* Even though we have not found anything, the result is zero. */ - retval = 0; + int cnt; + for (cnt = 0; cnt < retval; ++cnt) + if ((*groupsp)[cnt] == group) + break; + + if (cnt == retval) + (*groupsp)[retval++] = group; } if (sock != -1) diff --git a/posix/bug-glob1.c b/posix/bug-glob1.c index 4f7e981c75..05c2da7584 100644 --- a/posix/bug-glob1.c +++ b/posix/bug-glob1.c @@ -26,15 +26,21 @@ prepare (int argc, char *argv[]) size_t len = strlen (argv[1]); static const char ext[] = "globXXXXXX"; - fname = malloc (len + 1 + sizeof (ext)); + fname = malloc (len + sizeof (ext)); if (fname == NULL) error (EXIT_FAILURE, errno, "cannot create temp file"); - strcpy (stpcpy (stpcpy (fname, argv[1]), "/"), ext); + again: + strcpy (stpcpy (fname, argv[1]), ext); fname = mktemp (fname); if (fname == NULL || *fname == '\0') error (EXIT_FAILURE, errno, "cannot create temp file name"); if (symlink ("bug-glob1-does-not-exist", fname) != 0) - error (EXIT_FAILURE, errno, "cannot create symlink"); + { + if (errno == EEXIST) + goto again; + + error (EXIT_FAILURE, errno, "cannot create symlink"); + } add_temp_file (fname); } -- cgit v1.2.3