diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-07-10 20:02:00 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-07-10 20:02:00 +0000 |
commit | 47a81620adc8c33631bd4b3b8d122c2a17940f8c (patch) | |
tree | cc9128904b2033f9184b42a149d434e2d86ed7af | |
parent | 8fdc11384ea3bddaaba026c98d21fa608d7d7a1d (diff) | |
download | glibc-47a81620adc8c33631bd4b3b8d122c2a17940f8c.tar.gz glibc-47a81620adc8c33631bd4b3b8d122c2a17940f8c.tar.xz glibc-47a81620adc8c33631bd4b3b8d122c2a17940f8c.zip |
Update.
2000-07-09 Mark Kettenis <kettenis@gnu.org> * elf/rtld.c (dl_main): Move call to __libc_check_standard_fds... * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): ... to here. 2000-07-10 Ulrich Drepper <drepper@redhat.com> * include/features.h: Include ISO C99 features if the compiler used is an ISO C99 compiler. Patch by Joseph S. Myers <jsm28@cam.ac.uk>. 2000-07-08 Mark Kettenis <kettenis@gnu.org> * iconv/gconv_conf.c: Include <bits/libc-lock.h>.
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | elf/rtld.c | 9 | ||||
-rw-r--r-- | include/features.h | 3 | ||||
-rw-r--r-- | sysdeps/generic/dl-sysdep.c | 9 |
4 files changed, 26 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index 6f7a7d7f61..c4183089f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2000-07-09 Mark Kettenis <kettenis@gnu.org> + + * elf/rtld.c (dl_main): Move call to __libc_check_standard_fds... + * sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): ... to here. + +2000-07-10 Ulrich Drepper <drepper@redhat.com> + + * include/features.h: Include ISO C99 features if the compiler used + is an ISO C99 compiler. + Patch by Joseph S. Myers <jsm28@cam.ac.uk>. + +2000-07-08 Mark Kettenis <kettenis@gnu.org> + + * iconv/gconv_conf.c: Include <bits/libc-lock.h>. + 2000-07-10 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/i386/sigaction.c: Make alias weak since diff --git a/elf/rtld.c b/elf/rtld.c index 5dbab3a885..68c516d4bc 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -52,9 +52,6 @@ extern void *_dl_sysdep_read_whole_file (const char *filename, size_t *filesize_ptr, int mmap_prot); -/* Protec SUID program against misuse of file descriptors. */ -extern void __libc_check_standard_fds (void); - /* Helper function to handle errors while resolving symbols. */ static void print_unresolved (int errcode, const char *objname, const char *errsting); @@ -400,12 +397,6 @@ dl_main (const ElfW(Phdr) *phdr, hp_timing_t diff; #endif - /* First thing, if this is a SUID program we make sure that FDs 0, - 1, and 2 are allocated. If necessary we are doing it ourself. - If it is not possible we stop the program. */ - if (__builtin_expect (__libc_enable_secure, 0)) - __libc_check_standard_fds (); - /* Process the environment variable which control the behaviour. */ process_envvars (&mode, &_dl_lazy); diff --git a/include/features.h b/include/features.h index ab3126cdbf..96ac7e5f75 100644 --- a/include/features.h +++ b/include/features.h @@ -152,7 +152,8 @@ which was used prior to the standard acceptance. This macro will eventually go away and the features enabled by default once the ISO C99 standard is widely adopted. */ -#if defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE +#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \ + || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) # define __USE_ISOC99 1 #endif diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c index 5994af3986..1b00775d72 100644 --- a/sysdeps/generic/dl-sysdep.c +++ b/sysdeps/generic/dl-sysdep.c @@ -45,6 +45,9 @@ extern fpu_control_t _dl_fpu_control; extern void _end; extern void ENTRY_POINT (void); +/* Protect SUID program against misuse of file descriptors. */ +extern void __libc_check_standard_fds (void); + ElfW(Addr) _dl_base_addr; int __libc_enable_secure; int __libc_multiple_libcs = 0; /* Defining this here avoids the inclusion @@ -167,6 +170,12 @@ _dl_sysdep_start (void **start_argptr, will see this new value and not clobber our data. */ __sbrk (_dl_pagesize - ((&_end - (void *) 0) & (_dl_pagesize - 1))); + /* If this is a SUID program we make sure that FDs 0, 1, and 2 are + allocated. If necessary we are doing it ourself. If it is not + possible we stop the program. */ + if (__builtin_expect (__libc_enable_secure, 0)) + __libc_check_standard_fds (); + (*dl_main) (phdr, phnum, &user_entry); return user_entry; } |