From 7f65f3e3920a0dd6bb6a8774f46063371be4d029 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 5 Dec 2006 21:50:20 +0000 Subject: Updated to fedora-glibc-20061205T2141 --- ChangeLog | 42 ++++++++++++++++++++++ fedora/branch.mk | 4 +-- fedora/glibc.spec.in | 8 ++++- io/Makefile | 2 +- io/tst-ttyname_r.c | 42 ++++++++++++++++++++++ localedata/ChangeLog | 6 ++++ localedata/locales/cs_CZ | 4 +-- manual/string.texi | 9 ++--- nis/nis_subr.c | 2 +- nscd/nscd.init | 9 +---- sysdeps/i386/i686/memcmp.S | 64 +++++++++++++++++----------------- sysdeps/unix/sysv/linux/i386/clone.S | 4 +++ sysdeps/unix/sysv/linux/sh/sys/io.h | 48 ------------------------- sysdeps/unix/sysv/linux/ttyname.c | 11 +++--- sysdeps/unix/sysv/linux/ttyname_r.c | 11 +++--- sysdeps/unix/sysv/linux/x86_64/clone.S | 4 +++ 16 files changed, 158 insertions(+), 112 deletions(-) create mode 100644 io/tst-ttyname_r.c delete mode 100644 sysdeps/unix/sysv/linux/sh/sys/io.h diff --git a/ChangeLog b/ChangeLog index 2280c6db64..80fa9c5050 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,45 @@ +2006-12-05 Jakub Jelinek + + * nis/nis_subr.c (nis_getnames): Revert last change. + +2006-12-04 Jakub Jelinek + + * sysdeps/unix/sysv/linux/ttyname.c: Include termios.h. + (ttyname): Use tcgetattr instead of isatty, don't set errno to ENOTTY. + * sysdeps/unix/sysv/linux/ttyname_r.c: Include termios.h. + (__ttyname_r): Use tcgetattr instead of isatty, don't set errno to + ENOTTY. + * io/Makefile: Add rules to build and run tst-ttyname_r test. + * io/tst-ttyname_r.c: New test. + +2006-12-03 Kaz Kojima + + * sysdeps/unix/sysv/linux/sh/sys/io.h: Removed. + +2006-11-30 H.J. Lu + + * sysdeps/i386/i686/memcmp.S: Use jump table as the base of + jump table entries. + +2006-11-30 Jan Kratochvil + + * sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost + `clone' function to ensure proper unwinding stop of gdb. + * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise. + +2006-12-01 Ulrich Drepper + + * nscd/nscd.init: Remove obsolete and commented-out -S option + handling. + +2006-11-23 Jakub Jelinek + + [BZ #3514] + * manual/string.texi (strncmp): Fix pastos from wcscmp description. + + [BZ #3515] + * manual/string.texi (strtok): Remove duplicate paragraph. + 2006-12-01 Jan Kratochvil * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with diff --git a/fedora/branch.mk b/fedora/branch.mk index 944a694568..b61ceaaa5f 100644 --- a/fedora/branch.mk +++ b/fedora/branch.mk @@ -3,5 +3,5 @@ glibc-branch := fedora glibc-base := HEAD DIST_BRANCH := devel COLLECTION := dist-fc7 -fedora-sync-date := 2006-12-01 08:21 UTC -fedora-sync-tag := fedora-glibc-20061201T0821 +fedora-sync-date := 2006-12-05 21:41 UTC +fedora-sync-tag := fedora-glibc-20061205T2141 diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in index cf2b095fdb..d1b7f560af 100644 --- a/fedora/glibc.spec.in +++ b/fedora/glibc.spec.in @@ -1,4 +1,4 @@ -%define glibcrelease 10 +%define glibcrelease 11 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define xenarches i686 athlon %ifarch %{xenarches} @@ -1544,6 +1544,12 @@ rm -f *.filelist* %endif %changelog +* Tue Dec 5 2006 Jakub Jelinek 2.5.90-11 +- allow suid apps to setenv NIS_PATH and incluence through that + nis_list and nis_lookup (#209155) +- fix ttyname and ttyname_r with invalid file descriptor (#218276) +- cs_CZ LC_TIME fixes (#218438) + * Fri Dec 1 2006 Jakub Jelinek 2.5.90-10 - fix x86-64 restore_rt unwind info diff --git a/io/Makefile b/io/Makefile index 4aadfbca01..18287b201a 100644 --- a/io/Makefile +++ b/io/Makefile @@ -66,7 +66,7 @@ tests := test-utime test-stat test-stat2 test-lfs tst-getcwd \ tst-openat tst-unlinkat tst-fstatat tst-futimesat \ tst-renameat tst-fchownat tst-fchmodat tst-faccessat \ tst-symlinkat tst-linkat tst-readlinkat tst-mkdirat \ - tst-mknodat tst-mkfifoat + tst-mknodat tst-mkfifoat tst-ttyname_r distribute := ftwtest-sh diff --git a/io/tst-ttyname_r.c b/io/tst-ttyname_r.c new file mode 100644 index 0000000000..8e2f30c972 --- /dev/null +++ b/io/tst-ttyname_r.c @@ -0,0 +1,42 @@ +#include +#include +#include +#include +#include + +static void do_prepare (void); +#define PREPARE(argc, argv) do_prepare () +static int do_test (void); +#define TEST_FUNCTION do_test () +#include + +static int temp_fd; + +static void +do_prepare (void) +{ + char *temp_file; + temp_fd = create_temp_file ("tst-ttyname_r.", &temp_file); + if (temp_fd == -1) + error (1, errno, "cannot create temporary file"); +} + +static int +do_test (void) +{ + int ret = 0; + char buf[sysconf (_SC_TTY_NAME_MAX) + 1]; + int res = ttyname_r (-1, buf, sizeof (buf)); + if (res != EBADF) + { + printf ("1st ttyname_r returned with res %d\n", res); + ret++; + } + res = ttyname_r (temp_fd, buf, sizeof (buf)); + if (res != ENOTTY) + { + printf ("2nd ttyname_r returned with res %d\n", res); + ret++; + } + return ret; +} diff --git a/localedata/ChangeLog b/localedata/ChangeLog index 2d13f941dd..85b2d7948d 100644 --- a/localedata/ChangeLog +++ b/localedata/ChangeLog @@ -1,3 +1,9 @@ +2006-12-05 Jakub Jelinek + + * locales/cs_CZ (LC_TIME): Change d_fmt to %e.%m.%Y from %-d.%-m.%Y. + Change d_t_fmt to %a %-d. %B %Y, %H:%M:%S %Z from + %a %e. %B %Y, %H:%M:%S %Z. + 2006-11-02 Ulrich Drepper * locales/mai_IN: New file. diff --git a/localedata/locales/cs_CZ b/localedata/locales/cs_CZ index 9667700a93..5d279187eb 100644 --- a/localedata/locales/cs_CZ +++ b/localedata/locales/cs_CZ @@ -2440,9 +2440,9 @@ abmon "";/ week 7;19971201;4 -d_t_fmt "" +d_t_fmt "" -d_fmt "" +d_fmt "" t_fmt "" diff --git a/manual/string.texi b/manual/string.texi index f582bad96d..2fe60395eb 100644 --- a/manual/string.texi +++ b/manual/string.texi @@ -1187,8 +1187,8 @@ regards these characters as parts of the alphabet they do match. @comment ISO @deftypefun int strncmp (const char *@var{s1}, const char *@var{s2}, size_t @var{size}) This function is the similar to @code{strcmp}, except that no more than -@var{size} wide characters are compared. In other words, if the two -strings are the same in their first @var{size} wide characters, the +@var{size} characters are compared. In other words, if the two +strings are the same in their first @var{size} characters, the return value is zero. @end deftypefun @@ -1962,11 +1962,6 @@ If the end of the string @var{newstring} is reached, or if the remainder of string consists only of delimiter characters, @code{strtok} returns a null pointer. -Note that ``character'' is here used in the sense of byte. In a string -using a multibyte character encoding (abstract) character consisting of -more than one byte are not treated as an entity. Each byte is treated -separately. The function is not locale-dependent. - Note that ``character'' is here used in the sense of byte. In a string using a multibyte character encoding (abstract) character consisting of more than one byte are not treated as an entity. Each byte is treated diff --git a/nis/nis_subr.c b/nis/nis_subr.c index 258479c857..c68189e541 100644 --- a/nis/nis_subr.c +++ b/nis/nis_subr.c @@ -178,7 +178,7 @@ nis_getnames (const_nis_name name) } /* Get the search path, where we have to search "name" */ - path = __secure_getenv ("NIS_PATH"); + path = getenv ("NIS_PATH"); if (path == NULL) path = strdupa ("$"); else diff --git a/nscd/nscd.init b/nscd/nscd.init index 1fba72f5c3..dcf92df3da 100644 --- a/nscd/nscd.init +++ b/nscd/nscd.init @@ -38,15 +38,8 @@ prog=nscd start () { [ -d /var/run/nscd ] || mkdir /var/run/nscd [ -d /var/db/nscd ] || mkdir /var/db/nscd - secure="" -# for table in passwd group hosts -# do -# if egrep -q '^'$table':.*nisplus' /etc/nsswitch.conf; then -# /usr/lib/nscd_nischeck $table || secure="$secure -S $table,yes" -# fi -# done echo -n $"Starting $prog: " - daemon /usr/sbin/nscd $secure $NSCD_OPTIONS + daemon /usr/sbin/nscd $NSCD_OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S index 113760d846..4fa6adea98 100644 --- a/sysdeps/i386/i686/memcmp.S +++ b/sysdeps/i386/i686/memcmp.S @@ -380,38 +380,38 @@ END (BP_SYM (memcmp)) .section .rodata ALIGN (2) L(table_32bytes) : - .long L(0bytes) - . + 0x0 - .long L(1bytes) - . + 0x4 - .long L(2bytes) - . + 0x8 - .long L(3bytes) - . + 0xc - .long L(4bytes) - . + 0x10 - .long L(5bytes) - . + 0x14 - .long L(6bytes) - . + 0x18 - .long L(7bytes) - . + 0x1c - .long L(8bytes) - . + 0x20 - .long L(9bytes) - . + 0x24 - .long L(10bytes) - . + 0x28 - .long L(11bytes) - . + 0x2c - .long L(12bytes) - . + 0x30 - .long L(13bytes) - . + 0x34 - .long L(14bytes) - . + 0x38 - .long L(15bytes) - . + 0x3c - .long L(16bytes) - . + 0x40 - .long L(17bytes) - . + 0x44 - .long L(18bytes) - . + 0x48 - .long L(19bytes) - . + 0x4c - .long L(20bytes) - . + 0x50 - .long L(21bytes) - . + 0x54 - .long L(22bytes) - . + 0x58 - .long L(23bytes) - . + 0x5c - .long L(24bytes) - . + 0x60 - .long L(25bytes) - . + 0x64 - .long L(26bytes) - . + 0x68 - .long L(27bytes) - . + 0x6c - .long L(28bytes) - . + 0x70 - .long L(29bytes) - . + 0x74 - .long L(30bytes) - . + 0x78 - .long L(31bytes) - . + 0x7c + .long L(0bytes) - L(table_32bytes) + .long L(1bytes) - L(table_32bytes) + .long L(2bytes) - L(table_32bytes) + .long L(3bytes) - L(table_32bytes) + .long L(4bytes) - L(table_32bytes) + .long L(5bytes) - L(table_32bytes) + .long L(6bytes) - L(table_32bytes) + .long L(7bytes) - L(table_32bytes) + .long L(8bytes) - L(table_32bytes) + .long L(9bytes) - L(table_32bytes) + .long L(10bytes) - L(table_32bytes) + .long L(11bytes) - L(table_32bytes) + .long L(12bytes) - L(table_32bytes) + .long L(13bytes) - L(table_32bytes) + .long L(14bytes) - L(table_32bytes) + .long L(15bytes) - L(table_32bytes) + .long L(16bytes) - L(table_32bytes) + .long L(17bytes) - L(table_32bytes) + .long L(18bytes) - L(table_32bytes) + .long L(19bytes) - L(table_32bytes) + .long L(20bytes) - L(table_32bytes) + .long L(21bytes) - L(table_32bytes) + .long L(22bytes) - L(table_32bytes) + .long L(23bytes) - L(table_32bytes) + .long L(24bytes) - L(table_32bytes) + .long L(25bytes) - L(table_32bytes) + .long L(26bytes) - L(table_32bytes) + .long L(27bytes) - L(table_32bytes) + .long L(28bytes) - L(table_32bytes) + .long L(29bytes) - L(table_32bytes) + .long L(30bytes) - L(table_32bytes) + .long L(31bytes) - L(table_32bytes) #undef bcmp diff --git a/sysdeps/unix/sysv/linux/i386/clone.S b/sysdeps/unix/sysv/linux/i386/clone.S index 54524ec120..f73a4b5195 100644 --- a/sysdeps/unix/sysv/linux/i386/clone.S +++ b/sysdeps/unix/sysv/linux/i386/clone.S @@ -120,6 +120,9 @@ L(pseudo_end): ret L(thread_start): + cfi_startproc; + /* Clearing frame pointer is insufficient, use CFI. */ + cfi_undefined (eip); /* Note: %esi is zero. */ movl %esi,%ebp /* terminate the stack frame */ #ifdef RESET_PID @@ -152,6 +155,7 @@ L(nomoregetpid): jmp L(haspid) .previous #endif + cfi_endproc; cfi_startproc PSEUDO_END (BP_SYM (__clone)) diff --git a/sysdeps/unix/sysv/linux/sh/sys/io.h b/sysdeps/unix/sysv/linux/sh/sys/io.h deleted file mode 100644 index 6fdc44ff89..0000000000 --- a/sysdeps/unix/sysv/linux/sh/sys/io.h +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright (C) 1996, 1998, 1999, 2000 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. */ - -#ifndef _SYS_IO_H - -#define _SYS_IO_H 1 -#include - -__BEGIN_DECLS - -/* If TURN_ON is TRUE, request for permission to do direct i/o on the - port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O - permission off for that range. This call requires root privileges. */ -extern int ioperm (unsigned long int __from, unsigned long int __num, - int __turn_on) __THROW; - -/* Set the I/O privilege level to LEVEL. If LEVEL is nonzero, - permission to access any I/O port is granted. This call requires - root privileges. */ -extern int iopl (int __level) __THROW; - -/* The functions that actually perform reads and writes. */ -extern unsigned char inb (unsigned long int port) __THROW; -extern unsigned short int inw (unsigned long int port) __THROW; -extern unsigned long int inl (unsigned long int port) __THROW; - -extern void outb (unsigned char value, unsigned long int port) __THROW; -extern void outw (unsigned short value, unsigned long int port) __THROW; -extern void outl (unsigned long value, unsigned long int port) __THROW; - -__END_DECLS - -#endif /* _SYS_IO_H */ diff --git a/sysdeps/unix/sysv/linux/ttyname.c b/sysdeps/unix/sysv/linux/ttyname.c index aed0fd8e0a..1b79787515 100644 --- a/sysdeps/unix/sysv/linux/ttyname.c +++ b/sysdeps/unix/sysv/linux/ttyname.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -118,12 +119,12 @@ ttyname (int fd) int dostat = 0; char *name; int save = errno; + struct termios term; - if (__builtin_expect (!__isatty (fd), 0)) - { - __set_errno (ENOTTY); - return NULL; - } + /* isatty check, tcgetattr is used because it sets the correct + errno (EBADF resp. ENOTTY) on error. */ + if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0)) + return NULL; /* We try using the /proc filesystem. */ *_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0'; diff --git a/sysdeps/unix/sysv/linux/ttyname_r.c b/sysdeps/unix/sysv/linux/ttyname_r.c index bd415f167b..cef8624dc6 100644 --- a/sysdeps/unix/sysv/linux/ttyname_r.c +++ b/sysdeps/unix/sysv/linux/ttyname_r.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -115,11 +116,11 @@ __ttyname_r (int fd, char *buf, size_t buflen) return ERANGE; } - if (__builtin_expect (!__isatty (fd), 0)) - { - __set_errno (ENOTTY); - return ENOTTY; - } + /* isatty check, tcgetattr is used because it sets the correct + errno (EBADF resp. ENOTTY) on error. */ + struct termios term; + if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0)) + return errno; /* We try using the /proc filesystem. */ *_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0'; diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S index 8a12b09035..db42f209c9 100644 --- a/sysdeps/unix/sysv/linux/x86_64/clone.S +++ b/sysdeps/unix/sysv/linux/x86_64/clone.S @@ -89,6 +89,9 @@ L(pseudo_end): ret L(thread_start): + cfi_startproc; + /* Clearing frame pointer is insufficient, use CFI. */ + cfi_undefined (rip); /* Clear the frame pointer. The ABI suggests this be done, to mark the outermost frame obviously. */ xorl %ebp, %ebp @@ -113,6 +116,7 @@ L(thread_start): /* Call exit with return value from function call. */ movq %rax, %rdi call HIDDEN_JUMPTARGET (_exit) + cfi_endproc; cfi_startproc; PSEUDO_END (BP_SYM (__clone)) -- cgit v1.2.3