about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-11-06 00:16:32 +0000
committerUlrich Drepper <drepper@redhat.com>2001-11-06 00:16:32 +0000
commitc95f3fd42ed8d7660e817cf74b0883d7563d8102 (patch)
tree1395eae94b48080a50cbefa142906ce445fdae7f /sysdeps
parentea41b9267dbd64faec6630e45fac87afb663ec11 (diff)
downloadglibc-c95f3fd42ed8d7660e817cf74b0883d7563d8102.tar.gz
glibc-c95f3fd42ed8d7660e817cf74b0883d7563d8102.tar.xz
glibc-c95f3fd42ed8d7660e817cf74b0883d7563d8102.zip
Update.
	* elf/elf.h: Add dynamic tag definitions for prelinking.

	* elf/rtld.c (process_envvars): Avoid using array of string pointers.
	Rewrite code to remove environment varables for SUID binaries.
	Small optimization in LD_PROFILE handling.
	* sysdeps/generic/unsecvars.h: Adjust format for process_envvars
	changes.
	* sysdeps/unix/sysv/linux/i386/dl-librecon.h: Likewise.

	* sysdeps/generic/dl-sysdep.c: Don't initialize _dl_cpuclock_offset.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/dl-sysdep.c2
-rw-r--r--sysdeps/generic/unsecvars.h29
-rw-r--r--sysdeps/unix/sysv/linux/i386/dl-librecon.h9
3 files changed, 25 insertions, 15 deletions
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index c89ab3c1fb..8d182be9e9 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -63,7 +63,7 @@ void *__libc_stack_end;
 static ElfW(auxv_t) *_dl_auxv;
 unsigned long int _dl_hwcap_mask = HWCAP_IMPORTANT;
 #if HP_TIMING_AVAIL
-hp_timing_t _dl_cpuclock_offset = 0;
+hp_timing_t _dl_cpuclock_offset;
 #endif
 
 #ifndef DL_FIND_ARG_COMPONENTS
diff --git a/sysdeps/generic/unsecvars.h b/sysdeps/generic/unsecvars.h
index cd08bb8a0d..efb9515951 100644
--- a/sysdeps/generic/unsecvars.h
+++ b/sysdeps/generic/unsecvars.h
@@ -1,12 +1,19 @@
-/* Environment variable to be removed for SUID programs.  */
+/* Environment variable to be removed for SUID programs.  The names are
+   all stuffed in a single string which means they have to be terminated
+   with a '\0' explicitly.  */
 #define UNSECURE_ENVVARS \
-  "GCONV_PATH",								      \
-  "HOSTALIASES",							      \
-  "LOCALDOMAIN",							      \
-  "LOCPATH",								      \
-  "MALLOC_TRACE",							      \
-  "NLSPATH",								      \
-  "RESOLV_HOST_CONF",							      \
-  "RES_OPTIONS",							      \
-  "TMPDIR",								      \
-  "TZDIR"
+  "LD_PRELOAD\0"							      \
+  "LD_LIBRARY_PATH\0"							      \
+  "LD_ORIGIN_PATH\0"							      \
+  "LD_DEBUG_OUTPUT\0"							      \
+  "LD_PROFILE\0"							      \
+  "GCONV_PATH\0"							      \
+  "HOSTALIASES\0"							      \
+  "LOCALDOMAIN\0"							      \
+  "LOCPATH\0"								      \
+  "MALLOC_TRACE\0"							      \
+  "NLSPATH\0"								      \
+  "RESOLV_HOST_CONF\0"							      \
+  "RES_OPTIONS\0"							      \
+  "TMPDIR\0"								      \
+  "TZDIR\0"
diff --git a/sysdeps/unix/sysv/linux/i386/dl-librecon.h b/sysdeps/unix/sysv/linux/i386/dl-librecon.h
index acff7fc14f..3e39a32e69 100644
--- a/sysdeps/unix/sysv/linux/i386/dl-librecon.h
+++ b/sysdeps/unix/sysv/linux/i386/dl-librecon.h
@@ -72,13 +72,16 @@
       }									      \
 									      \
   case 15:								      \
-    if (memcmp (envline, "LIBRARY_VERSION", 15) == 0)		      \
+    if (memcmp (envline, "LIBRARY_VERSION", 15) == 0)			      \
       {									      \
 	_dl_correct_cache_id = envline[16] == '5' ? 2 : 3;		      \
 	break;								      \
       }
 
-/* Extra unsecure variables.  */
-#define EXTRA_UNSECURE_ENVVARS "LD_AOUT_LIBRARY_PATH", "LD_AOUT_PRELOAD"
+/* Extra unsecure variables.  The names are all stuffed in a single
+   string which means they have to be terminated with a '\0' explicitly.  */
+#define EXTRA_UNSECURE_ENVVARS \
+  "LD_AOUT_LIBRARY_PATH\0"						      \
+  "LD_AOUT_PRELOAD\0"
 
 #endif /* dl-librecon.h */