glibc/sysdeps/nacl
Carlos O'Donell f8bf15febc Bug 20116: Fix use after free in pthread_create()
The commit documents the ownership rules around 'struct pthread' and
when a thread can read or write to the descriptor. With those ownership
rules in place it becomes obvious that pd->stopped_start should not be
touched in several of the paths during thread startup, particularly so
for detached threads. In the case of detached threads, between the time
the thread is created by the OS kernel and the creating thread checks
pd->stopped_start, the detached thread might have already exited and the
memory for pd unmapped. As a regression test we add a simple test which
exercises this exact case by quickly creating detached threads with
large enough stacks to ensure the thread stack cache is bypassed and the
stacks are unmapped. Before the fix the testcase segfaults, after the
fix it works correctly and completes without issue.

For a detailed discussion see:
https://www.sourceware.org/ml/libc-alpha/2017-01/msg00505.html
2017-01-28 19:21:44 -05:00
..
bits Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
_exit.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
access.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
backtrace.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
brk.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
chdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check_fds.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
chmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
clock_getres.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
clock_gettime.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
clock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
close.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
configure Add arm-nacl port. 2015-04-17 09:02:19 -07:00
configure.ac Add arm-nacl port. 2015-04-17 09:02:19 -07:00
createthread.c Bug 20116: Fix use after free in pthread_create() 2017-01-28 19:21:44 -05:00
dl-fileid.h Factor file identity rules out of generic rtld code. 2015-07-14 13:15:26 -07:00
dl-map-segments.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dl-osinfo.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dl-sysdep-open.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dl-sysdep.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dl-sysdep.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dl-unmap-segments.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dl-writev.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dup2.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
dup.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
entry.h Add arm-nacl port. 2015-04-17 09:02:19 -07:00
errnos.awk Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
euidaccess.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
exit-thread.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fchmod.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fdatasync.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fdopendir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fork.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
fsync.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ftruncate64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
ftruncate.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
futex-internal.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
fxstat64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
fxstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getcwd.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getdents64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
getdents.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getdtsz.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
gethostname.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getpagesize.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
getpid.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
getsysstats.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
gettimeofday.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
glob64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
glob.c Make sysdeps/posix bring in login subdir. 2015-07-23 17:04:22 -07:00
ifaddrs.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
Implies Add arm-nacl port. 2015-04-17 09:02:19 -07:00
init-first.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
iofdopen.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
irt.sed Add arm-nacl port. 2015-04-17 09:02:19 -07:00
isatty.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
kernel-features.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ld.abilist ld.so: Remove __libc_memalign 2016-11-30 16:23:58 +01:00
ldsodefs.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
libanl.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libBrokenLocale.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libc-start.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
libcrypt.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libdl.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libm.abilist Add fromfp functions. 2016-12-31 00:40:59 +00:00
libpthread.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libresolv.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
librt.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
libutil.abilist Simplify the abilist format 2015-11-06 13:58:53 +01:00
link.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lll_timedlock_wait.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lll_timedwait_tid.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lowlevellock-futex.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lowlevellock.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lseek64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
lseek.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lxstat64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
lxstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Makefile Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mkdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mmap64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
mmap.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
mprotect.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
munmap.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl_interface_ext_supply.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl_interface_query.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl-after-link.sh Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl-interface-list.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl-interface-table.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl-interfaces.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl-interfaces.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nacl-interfaces.mk.in Add arm-nacl port. 2015-04-17 09:02:19 -07:00
nacl-test-wrapper.sh Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
nanosleep.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
open64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
open.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
preconfigure Add arm-nacl port. 2015-04-17 09:02:19 -07:00
profil.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
pthread_condattr_setclock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
pthread-pids.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
read.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
readdir64_r.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
readdir64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
readdir_r.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
readdir.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
readlink.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
rename.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
rmdir.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
sched_yield.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
shlib-versions Add arm-nacl port. 2015-04-17 09:02:19 -07:00
sigaction.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
sprofil.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
start.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Subdirs Add arm-nacl port. 2015-04-17 09:02:19 -07:00
symlink.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
tls.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
truncate64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
truncate.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
uname-values.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
unlink.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
utimes.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Versions NaCl: Implement nacl_interface_ext_supply entry point. 2015-06-03 13:51:11 -07:00
write.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstat64.c Add arm-nacl port. 2015-04-17 09:02:19 -07:00
xstat.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstatconv.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstatconv.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00