mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Update.
* posix/unistd.h: Move declaration of __libc_enable_secure to... * include/unistd.h: ...here. * elf/dl-open.c (dl_open_worker): If DST is used in SUID program punt. * elf/dl-deps.c (expand_dst): Likewise. * elf/dynamic-link.h: Set DT_SYMBOLIC, DT_TEXTREL, and DT_BIND_NOW based on DT_FLAGS value. * elf/do-lookup.h: Remove reference_name parameter, add undef_map. Add test for symbols marked STV_HIDDEN. * elf/dl-lookup.c (_dl_lookup_symbol): Remove reference_name parameter, add undef_map. Compute reference_name locally. Update call to do_lookup. (_dl_lookup_symbol_skip): Likewise. (_dl_lookup_versioned_symbol): Likewise. (_dl_lookup_versioned_symbol_skip): Likewise. * elf/dl-libc.c: Update call to _dl_lookup_*symbol. * elf/dl-runtime.c: Likewise. * elf/dl-sym.c: Likewise. * elf/dl-symbol.c: Likewise. * elf/ldsodefs.h: Adjust prototypes. * elf/dl-reloc.c (RESOLV): Add test for STV_PROTECTED flag set and handle appropriately. Add comment about DT_TEXTREL. * elf/dl-runtime.c: Likewise.
This commit is contained in:
@ -22,6 +22,7 @@
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/param.h>
|
||||
#include <elf/ldsodefs.h>
|
||||
|
||||
@ -96,9 +97,15 @@ struct list
|
||||
\
|
||||
if (__cnt != 0) \
|
||||
{ \
|
||||
char *__newp = (char *) alloca (DL_DST_REQUIRED (l, __str, \
|
||||
strlen (__str), \
|
||||
__cnt)); \
|
||||
char *__newp; \
|
||||
\
|
||||
/* DST must not appear in SUID/SGID programs. */ \
|
||||
if (__libc_enable_secure) \
|
||||
_dl_signal_error (0, __str, \
|
||||
"DST not allowed in SUID/SGID programs"); \
|
||||
\
|
||||
__newp = (char *) alloca (DL_DST_REQUIRED (l, __str, strlen (__str), \
|
||||
__cnt)); \
|
||||
\
|
||||
__result = DL_DST_SUBSTITUTE (l, __str, __newp, 0); \
|
||||
\
|
||||
|
Reference in New Issue
Block a user