patches/glibc/2.1.3/rh62-06-glibc-2.1.3-preload.patch
changeset 330 447b203edc2e
parent 329 419d959441ed
child 331 0c05f9ea3254
     1.1 --- a/patches/glibc/2.1.3/rh62-06-glibc-2.1.3-preload.patch	Tue Aug 14 19:32:22 2007 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,86 +0,0 @@
     1.4 -2001-01-08  Ulrich Drepper  <drepper@redhat.com>
     1.5 -
     1.6 -	* elf/rtld.c (process_envvars): Place output files for profiling
     1.7 -	in SUID binaries in /var/profile.
     1.8 -
     1.9 -	* elf/dl-load.c (_dl_map_object): Don't look in cache for
    1.10 -	preloading in SUID binaries.
    1.11 -
    1.12 -	* elf/dl-profile.c (_dl_start_profile): Open the output file with
    1.13 -	O_NOFOLLOW if possible.
    1.14 -
    1.15 -	* sysdeps/generic/segfault.c (install_handler): Check output file
    1.16 -	name with access().
    1.17 -
    1.18 ---- libc/elf/rtld.c	2000/03/15 05:42:01	1.148.2.7
    1.19 -+++ libc/elf/rtld.c	2001/01/10 07:45:19
    1.20 -@@ -1273,7 +1273,7 @@
    1.21 -   char *debug_output = NULL;
    1.22 - 
    1.23 -   /* This is the default place for profiling data file.  */
    1.24 --  _dl_profile_output = "/var/tmp";
    1.25 -+  _dl_profile_output = __libc_enable_secure ? "/var/profile" : "/var/tmp";
    1.26 - 
    1.27 -   while ((envline = _dl_next_ld_env_entry (&runp)) != NULL)
    1.28 -     {
    1.29 ---- libc/elf/dl-load.c	1999/11/20 02:26:38	1.103.2.5
    1.30 -+++ libc/elf/dl-load.c	2001/01/10 07:45:20
    1.31 -@@ -1338,7 +1338,7 @@
    1.32 -       if (fd == -1 && env_path_list != NULL)
    1.33 - 	fd = open_path (name, namelen, preloaded, env_path_list, &realname);
    1.34 - 
    1.35 --      if (fd == -1)
    1.36 -+      if (fd == -1 && (! preloaded || ! __libc_enable_secure))
    1.37 - 	{
    1.38 - 	  /* Check the list of libraries in the file /etc/ld.so.cache,
    1.39 - 	     for compatibility with Linux's ldconfig program.  */
    1.40 ---- libc/elf/dl-profile.c	1998/06/07 13:35:48	1.14
    1.41 -+++ libc/elf/dl-profile.c	2001/01/10 07:45:21
    1.42 -@@ -263,7 +263,12 @@
    1.43 -   *cp++ = '/';
    1.44 -   __stpcpy (__stpcpy (cp, _dl_profile), ".profile");
    1.45 - 
    1.46 --  fd = __open (filename, O_RDWR | O_CREAT, 0666);
    1.47 -+#ifdef O_NOFOLLOW
    1.48 -+# define EXTRA_FLAGS | O_NOFOLLOW
    1.49 -+#else
    1.50 -+# define EXTRA_FLAGS
    1.51 -+#endif
    1.52 -+  fd = __open (filename, O_RDWR | O_CREAT EXTRA_FLAGS, 0666);
    1.53 -   if (fd == -1)
    1.54 -     {
    1.55 -       /* We cannot write the profiling data so don't do anything.  */
    1.56 ---- libc/sysdeps/generic/segfault.c	2000/03/21 04:53:40	1.10.2.2
    1.57 -+++ libc/sysdeps/generic/segfault.c	2001/01/10 07:45:22
    1.58 -@@ -236,6 +236,7 @@
    1.59 - 
    1.60 -   /* Preserve the output file name if there is any given.  */
    1.61 -   name = getenv ("SEGFAULT_OUTPUT_NAME");
    1.62 --  if (name != NULL && name[0] != '\0')
    1.63 -+  if (name != NULL && name[0] != '\0'
    1.64 -+      && (!__libc_enable_secure || access (name, R_OK | W_OK) == 0))
    1.65 -     fname = __strdup (name);
    1.66 - }
    1.67 -
    1.68 ---- libc/sysdeps/unix/sysv/linux/i386/dl-librecon.h.jj	Wed Feb 24 23:01:58 1999
    1.69 -+++ libc/sysdeps/unix/sysv/linux/i386/dl-librecon.h	Mon Jan 15 04:30:57 2001
    1.70 -@@ -49,13 +49,17 @@
    1.71 - /* Recognizing extra environment variables.  */
    1.72 - #define EXTRA_LD_ENVVARS \
    1.73 -   case 15:								      \
    1.74 --    if (memcmp (&envline[3], "LIBRARY_VERSION", 15) == 0)		      \
    1.75 -+    if (!__libc_enable_secure						      \
    1.76 -+	&& memcmp (&envline[3], "LIBRARY_VERSION", 15) == 0)		      \
    1.77 -       {									      \
    1.78 - 	_dl_correct_cache_id = envline[19] == '5' ? 2 : 3;		      \
    1.79 - 	break;								      \
    1.80 -       }
    1.81 - 
    1.82 - /* Extra unsecure variables.  */
    1.83 --#define EXTRA_UNSECURE_ENVVARS "LD_AOUT_LIBRARY_PATH", "LD_AOUT_PRELOAD"
    1.84 -+#define EXTRA_UNSECURE_ENVVARS	\
    1.85 -+  "LD_AOUT_LIBRARY_PATH",	\
    1.86 -+  "LD_AOUT_PRELOAD",		\
    1.87 -+  "LD_LIBRARY_VERSION"
    1.88 - 
    1.89 - #endif /* dl-librecon.h */