mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
2004-03-26 Ulrich Drepper <drepper@redhat.com> * elf/dl-caller.c: New file. * include/caller.h: New file. * Makefile (distribute): Add include/caller.h. * elf/Makefile (dl-routines): Add dl-caller. * elf/dl-load.c (_dl_map_object_from_fd): Record l_text_end. * elf/dl-open.c (check_libc_caller): Removed. (dl_open_worker): Use __check_caller instead. * elf/rtld.c (_rtld_global_ro): Initialize _dl_check_caller. (_dl_start_final): Record l_text_end for ld.so map. (dl_main): Record l_text_end for main object and vdso. * include/link.h (struct link_map): Add l_text_end field. * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Add _dl_check_caller field. Define enum allowmask. Add declaration of _dl_check_caller. * sysdeps/unix/sysv/linux/dl-execstack.c: Also use __check_caller test.
This commit is contained in:
@ -676,9 +676,10 @@ int
|
||||
internal_function
|
||||
__make_stacks_executable (void **stack_endp)
|
||||
{
|
||||
/* Challenge the caller. */
|
||||
if (*stack_endp != __libc_stack_end)
|
||||
return EPERM;
|
||||
/* First the main thread's stack. */
|
||||
int err = _dl_make_stack_executable (stack_endp);
|
||||
if (err != 0)
|
||||
return err;
|
||||
|
||||
#ifdef NEED_SEPARATE_REGISTER_STACK
|
||||
const size_t pagemask = ~(__getpagesize () - 1);
|
||||
@ -686,7 +687,6 @@ __make_stacks_executable (void **stack_endp)
|
||||
|
||||
lll_lock (stack_cache_lock);
|
||||
|
||||
int err = 0;
|
||||
list_t *runp;
|
||||
list_for_each (runp, &stack_used)
|
||||
{
|
||||
@ -716,9 +716,6 @@ __make_stacks_executable (void **stack_endp)
|
||||
|
||||
lll_unlock (stack_cache_lock);
|
||||
|
||||
if (err == 0)
|
||||
err = _dl_make_stack_executable (stack_endp);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user