Updated to fedora-glibc-20060424T2027

This commit is contained in:
Jakub Jelinek 2006-04-24 20:31:50 +00:00
parent 48f59b8e1a
commit 1100b0e292
13 changed files with 128 additions and 13 deletions

View File

@ -1,3 +1,29 @@
2006-04-24 Jakub Jelinek <jakub@redhat.com>
* malloc/arena.c (ptmalloc_init): Don't call __malloc_check_init
if MALLOC_CHECK_ env var contains an empty string.
2006-04-24 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Always initialize in6ai.
2006-04-24 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/sync_file_range.c (sync_file_range): Use
__LONG_LONG_PAIR macro.
* posix/bits/unistd.h (__readlinkat_chk): New prototype.
(__readlinkat_alias): New alias.
(readlinkat): New inline function.
* include/unistd.h (readlinkat): Add libc_hidden_proto.
* sysdeps/unix/sysv/linux/readlinkat.c (readlinkat): Add
libc_hidden_def.
* io/readlinkat.c (readlinkat): Likewise.
* debug/readlinkat_chk.c: New file.
* debug/Makefile (routines): Add readlinkat_chk.
* debug/Versions (libc): Export __readlinkat_chk@@GLIBC_2.5.
* debug/tst-chk1.c (do_test): Add readlinkat tests.
2006-04-23 Ulrich Drepper <drepper@redhat.com>
* nis/nss_nisplus/nisplus-netgrp.c: Cleanups.
@ -37,13 +63,13 @@
* sysdeps/unix/sysv/linux/kernel-features.h: Define
__ASSUME_PROC_SELF_FD_SYMLINK.
* sysdeps/unix/sysv/linux/ttyname.c: Cleanups. Avoid compatibility
code if possible. Move compatibility code in .text.compat section.
code is possible. Move compatibility code in .text.compat section.
* sysdeps/unix/sysv/linux/ttyname_r.c: Likewise.
2006-04-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Rewrite to avoid loop
over gaih array. There is only on function to call in the moment.
over gaih array. There is only one function to call in the moment.
2006-04-16 Ulrich Drepper <drepper@redhat.com>

View File

@ -31,7 +31,8 @@ routines = backtrace backtracesyms backtracesymsfd noophooks \
printf_chk fprintf_chk vprintf_chk vfprintf_chk \
gets_chk chk_fail readonly-area fgets_chk fgets_u_chk \
read_chk pread_chk pread64_chk recv_chk recvfrom_chk \
readlink_chk getwd_chk getcwd_chk realpath_chk ptsname_r_chk \
readlink_chk readlinkat_chk getwd_chk getcwd_chk \
realpath_chk ptsname_r_chk \
wctomb_chk wcscpy_chk wmemcpy_chk wmemmove_chk wmempcpy_chk \
wcpcpy_chk wcsncpy_chk wcscat_chk wcsncat_chk wmemset_chk \
wcpncpy_chk \

View File

@ -36,4 +36,7 @@ libc {
__stack_chk_fail;
}
GLIBC_2.5 {
__readlinkat_chk;
}
}

31
debug/readlinkat_chk.c Normal file
View File

@ -0,0 +1,31 @@
/* Copyright (C) 2006 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 <unistd.h>
#include <sys/param.h>
ssize_t
__readlinkat_chk (int fd, const char *path, void *buf, size_t len,
size_t buflen)
{
if (len > buflen)
__chk_fail ();
return readlinkat (fd, path, buf, len);
}

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2004, 2005 Free Software Foundation, Inc.
/* Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
@ -947,6 +947,34 @@ do_test (void)
CHK_FAIL_END
#endif
int tmpfd = open ("/tmp", O_RDONLY | O_DIRECTORY);
if (tmpfd < 0)
FAIL ();
if (readlinkat (tmpfd, fname + sizeof ("/tmp/") - 1, readlinkbuf, 4) != 3
|| memcmp (readlinkbuf, "bar", 3) != 0)
FAIL ();
if (readlinkat (tmpfd, fname + sizeof ("/tmp/") - 1, readlinkbuf + 1,
l0 + 3) != 3
|| memcmp (readlinkbuf, "bbar", 4) != 0)
FAIL ();
#if __USE_FORTIFY_LEVEL >= 1
CHK_FAIL_START
if (readlinkat (tmpfd, fname + sizeof ("/tmp/") - 1, readlinkbuf + 2,
l0 + 3) != 3)
FAIL ();
CHK_FAIL_END
CHK_FAIL_START
if (readlinkat (tmpfd, fname + sizeof ("/tmp/") - 1, readlinkbuf + 3,
4) != 3)
FAIL ();
CHK_FAIL_END
#endif
close (tmpfd);
char *cwd1 = getcwd (NULL, 0);
if (cwd1 == NULL)
FAIL ();

View File

@ -3,5 +3,5 @@ glibc-branch := fedora
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-fc4
fedora-sync-date := 2006-04-24 08:20 UTC
fedora-sync-tag := fedora-glibc-20060424T0820
fedora-sync-date := 2006-04-24 20:27 UTC
fedora-sync-tag := fedora-glibc-20060424T2027

View File

@ -15,6 +15,7 @@ libc_hidden_proto (getlogin_r)
libc_hidden_proto (seteuid)
libc_hidden_proto (setegid)
libc_hidden_proto (tcgetpgrp)
libc_hidden_proto (readlinkat)
/* Now define the internal interfaces. */
extern int __access (__const char *__name, int __type);

View File

@ -46,5 +46,6 @@ readlinkat (fd, path, buf, len)
return -1;
}
stub_warning (readlinkat)
libc_hidden_def (readlinkat)
#include <stub-tag.h>

View File

@ -551,8 +551,8 @@ ptmalloc_init (void)
}
s = getenv("MALLOC_CHECK_");
#endif
if(s) {
if(s[0]) mALLOPt(M_CHECK_ACTION, (int)(s[0] - '0'));
if(s && s[0]) {
mALLOPt(M_CHECK_ACTION, (int)(s[0] - '0'));
if (check_action != 0)
__malloc_check_init();
}

View File

@ -100,6 +100,28 @@ __NTH (readlink (__const char *__restrict __path, char *__restrict __buf,
}
#endif
#ifdef __USE_ATFILE
extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path,
char *__restrict __buf, size_t __len,
size_t __buflen)
__THROW __nonnull ((2, 3)) __wur;
extern ssize_t __REDIRECT_NTH (__readlinkat_alias,
(int __fd, __const char *__restrict __path,
char *__restrict __buf, size_t __len),
readlinkat)
__nonnull ((2, 3)) __wur;
extern __always_inline __nonnull ((2, 3)) __wur ssize_t
__NTH (readlinkat (int __fd, __const char *__restrict __path,
char *__restrict __buf, size_t __len))
{
if (__bos (__buf) != (size_t) -1
&& (!__builtin_constant_p (__len) || __len > __bos (__buf)))
return __readlinkat_chk (__fd, __path, __buf, __len, __bos (__buf));
return __readlinkat_alias (__fd, __path, __buf, __len);
}
#endif
extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
__THROW __wur;
extern char *__REDIRECT_NTH (__getcwd_alias,

View File

@ -1516,7 +1516,7 @@ getaddrinfo (const char *name, const char *service,
if ((hints->ai_flags & AI_CANONNAME) && name == NULL)
return EAI_BADFLAGS;
struct in6addrinfo *in6ai;
struct in6addrinfo *in6ai = NULL;
size_t in6ailen;
bool seen_ipv4 = false;
bool seen_ipv6 = false;

View File

@ -87,3 +87,4 @@ readlinkat (fd, path, buf, len)
return result;
#endif
}
libc_hidden_def (readlinkat)

View File

@ -29,9 +29,10 @@
int
sync_file_range (int fd, __off64_t from, __off64_t to, int flags)
{
return INLINE_SYSCALL (sync_file_range, 6, fd, (off_t) (from >> 32),
(off_t) (from & 0xffffffff), (off_t) (to >> 32),
(off_t) (to & 0xffffffff), flags);
return INLINE_SYSCALL (sync_file_range, 6, fd,
__LONG_LONG_PAIR ((long) (from >> 32), (long) from),
__LONG_LONG_PAIR ((long) (to >> 32), (long) to),
flags);
}
#else
int