mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-07 18:10:07 +00:00
c7fcce38c8
Unlike sigstate->thread, tcb->self did not hold a Mach port reference on the thread port it names. This means that the port can be deallocated, and the name reused for something else, without anyone noticing. Using tcb->self will then lead to port use-after-free. Fortunately nothing was accessing tcb->self, other than it being intially set to then-valid thread port name upon TCB initialization. To assert that this keeps being the case without altering TCB layout, rename self -> self_do_not_use, and stop initializing it. Also, do not (re-)allocate a whole separate and unused stack for the main thread, and just exit __pthread_setup early in this case. Found upon attempting to use tcb->self and getting unexpected crashes. Signed-off-by: Sergey Bugaev <bugaevc@gmail.com> Message-Id: <20230517191436.73636-7-bugaevc@gmail.com> |
||
---|---|---|
.. | ||
htl | ||
sys | ||
dl-sysdep.c | ||
exc2signal.c | ||
init-first.c | ||
ioperm.c | ||
Makefile | ||
set-hooks-arch.h | ||
signal-defines.sym | ||
trampoline.c |