mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 05:20:06 +00:00
Fix pthreads getrlimit, gettimeofday namespace (bug 17682).
Some pthreads functions use getrlimit and gettimeofday, but these functions are XSI, not base POSIX; this is a namespace issue for dynamic linking as well as static linking. This patch makes them use __getrlimit and __gettimeofday instead - the former needed to be newly exported from libc.so at GLIBC_PRIVATE (and so now needs libc_hidden_proto / libc_hidden_def), the latter was already exported. Tested for x86_64 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #17682] * resource/Versions (libc): Add __getrlimit at GLIBC_PRIVATE. * resource/getrlimit.c (__getrlimit): Use libc_hidden_def. * sysdeps/mach/hurd/getrlimit.c (__getrlimit): Likewise. * include/sys/resource.h (__getrlimit): Use libc_hidden_proto. * nptl/nptl-init.c (__pthread_initialize_minimal_internal): Use __getrlimit instead of getrlimit. * nptl/pthread_cond_timedwait.c (__pthread_cond_timedwait): Use __gettimeofday instead of gettimeofday. * nptl/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock): Likewise. * nptl/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock): Likewise. * sysdeps/pthread/aio_misc.c (handle_fildes_io): Likewise. * conform/Makefile (test-xfail-POSIX2008/aio.h/linknamespace): Remove variable. (test-xfail-POSIX2008/pthread.h/linknamespace): Likewise. (test-xfail-POSIX2008/time.h/linknamespace): Likewise.
This commit is contained in:
parent
9752c3cdbc
commit
c5c2b7c3fd
21
ChangeLog
21
ChangeLog
@ -1,3 +1,24 @@
|
||||
2014-12-06 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #17682]
|
||||
* resource/Versions (libc): Add __getrlimit at GLIBC_PRIVATE.
|
||||
* resource/getrlimit.c (__getrlimit): Use libc_hidden_def.
|
||||
* sysdeps/mach/hurd/getrlimit.c (__getrlimit): Likewise.
|
||||
* include/sys/resource.h (__getrlimit): Use libc_hidden_proto.
|
||||
* nptl/nptl-init.c (__pthread_initialize_minimal_internal): Use
|
||||
__getrlimit instead of getrlimit.
|
||||
* nptl/pthread_cond_timedwait.c (__pthread_cond_timedwait): Use
|
||||
__gettimeofday instead of gettimeofday.
|
||||
* nptl/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock):
|
||||
Likewise.
|
||||
* nptl/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock):
|
||||
Likewise.
|
||||
* sysdeps/pthread/aio_misc.c (handle_fildes_io): Likewise.
|
||||
* conform/Makefile (test-xfail-POSIX2008/aio.h/linknamespace):
|
||||
Remove variable.
|
||||
(test-xfail-POSIX2008/pthread.h/linknamespace): Likewise.
|
||||
(test-xfail-POSIX2008/time.h/linknamespace): Likewise.
|
||||
|
||||
2014-12-05 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
|
||||
|
||||
* libio/tst-ftell-active-handler.c (do_ftell_test): Fix buffer overrun
|
||||
|
3
NEWS
3
NEWS
@ -13,7 +13,8 @@ Version 2.21
|
||||
16619, 16740, 16857, 17192, 17266, 17344, 17363, 17370, 17371, 17411,
|
||||
17460, 17475, 17485, 17501, 17506, 17508, 17522, 17555, 17570, 17571,
|
||||
17572, 17573, 17574, 17581, 17582, 17583, 17584, 17585, 17589, 17594,
|
||||
17601, 17608, 17616, 17625, 17633, 17647, 17653, 17664, 17665, 17668.
|
||||
17601, 17608, 17616, 17625, 17633, 17647, 17653, 17664, 17665, 17668,
|
||||
17682.
|
||||
|
||||
* CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
|
||||
under certain input conditions resulting in the execution of a shell for
|
||||
|
@ -424,18 +424,15 @@ test-xfail-XOPEN2K/syslog.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K/ucontext.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K/unistd.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K/wordexp.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/aio.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/ctype.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/dirent.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/fcntl.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/grp.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/mqueue.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/netdb.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/pthread.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/regex.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/semaphore.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/spawn.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/time.h/linknamespace = yes
|
||||
test-xfail-POSIX2008/unistd.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/dirent.h/linknamespace = yes
|
||||
test-xfail-XOPEN2K8/fcntl.h/linknamespace = yes
|
||||
|
@ -9,6 +9,7 @@ libc_hidden_proto (getrlimit64)
|
||||
/* Now define the internal interfaces. */
|
||||
extern int __getrlimit (enum __rlimit_resource __resource,
|
||||
struct rlimit *__rlimits);
|
||||
libc_hidden_proto (__getrlimit)
|
||||
extern int __getrusage (enum __rusage_who __who, struct rusage *__usage)
|
||||
attribute_hidden;
|
||||
|
||||
|
@ -433,7 +433,7 @@ __pthread_initialize_minimal_internal (void)
|
||||
/* Determine the default allowed stack size. This is the size used
|
||||
in case the user does not specify one. */
|
||||
struct rlimit limit;
|
||||
if (getrlimit (RLIMIT_STACK, &limit) != 0
|
||||
if (__getrlimit (RLIMIT_STACK, &limit) != 0
|
||||
|| limit.rlim_cur == RLIM_INFINITY)
|
||||
/* The system limit is not usable. Use an architecture-specific
|
||||
default. */
|
||||
|
@ -131,7 +131,7 @@ __pthread_cond_timedwait (cond, mutex, abstime)
|
||||
# else
|
||||
/* Get the current time. So far we support only one clock. */
|
||||
struct timeval tv;
|
||||
(void) gettimeofday (&tv, NULL);
|
||||
(void) __gettimeofday (&tv, NULL);
|
||||
|
||||
/* Convert the absolute timeout value to a relative timeout. */
|
||||
rt.tv_sec = abstime->tv_sec - tv.tv_sec;
|
||||
|
@ -90,7 +90,7 @@ pthread_rwlock_timedrdlock (rwlock, abstime)
|
||||
|| !defined lll_futex_timed_wait_bitset)
|
||||
/* Get the current time. So far we support only one clock. */
|
||||
struct timeval tv;
|
||||
(void) gettimeofday (&tv, NULL);
|
||||
(void) __gettimeofday (&tv, NULL);
|
||||
|
||||
/* Convert the absolute timeout value to a relative timeout. */
|
||||
struct timespec rt;
|
||||
|
@ -81,7 +81,7 @@ pthread_rwlock_timedwrlock (rwlock, abstime)
|
||||
|| !defined lll_futex_timed_wait_bitset)
|
||||
/* Get the current time. So far we support only one clock. */
|
||||
struct timeval tv;
|
||||
(void) gettimeofday (&tv, NULL);
|
||||
(void) __gettimeofday (&tv, NULL);
|
||||
|
||||
/* Convert the absolute timeout value to a relative timeout. */
|
||||
struct timespec rt;
|
||||
|
@ -22,4 +22,7 @@ libc {
|
||||
# s*
|
||||
setrlimit64;
|
||||
}
|
||||
GLIBC_PRIVATE {
|
||||
__getrlimit;
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits)
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
libc_hidden_def (__getrlimit)
|
||||
weak_alias (__getrlimit, getrlimit)
|
||||
|
||||
stub_warning (getrlimit)
|
||||
|
@ -43,4 +43,5 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits)
|
||||
|
||||
return 0;
|
||||
}
|
||||
libc_hidden_def (__getrlimit)
|
||||
weak_alias (__getrlimit, getrlimit)
|
||||
|
@ -631,7 +631,7 @@ handle_fildes_io (void *arg)
|
||||
struct timespec wakeup_time;
|
||||
|
||||
++idle_thread_count;
|
||||
gettimeofday (&now, NULL);
|
||||
__gettimeofday (&now, NULL);
|
||||
wakeup_time.tv_sec = now.tv_sec + optim.aio_idle_time;
|
||||
wakeup_time.tv_nsec = now.tv_usec * 1000;
|
||||
if (wakeup_time.tv_nsec >= 1000000000)
|
||||
|
Loading…
Reference in New Issue
Block a user