r6647 - in glibc-package/branches/glibc-2.21/debian: . patches patches/any
Author: aurel32
Date: 2015-10-18 20:36:25 +0000 (Sun, 18 Oct 2015)
New Revision: 6647
Added:
glibc-package/branches/glibc-2.21/debian/patches/any/cvs-ld_pointer_guard.diff
Modified:
glibc-package/branches/glibc-2.21/debian/changelog
glibc-package/branches/glibc-2.21/debian/patches/series
Log:
patches/any/cvs-ld_pointer_guard.diff: new patch from upstream to
unconditionally disable LD_POINTER_GUARD. Closes: #798316, #801691.
Modified: glibc-package/branches/glibc-2.21/debian/changelog
===================================================================
--- glibc-package/branches/glibc-2.21/debian/changelog 2015-10-18 20:36:20 UTC (rev 6646)
+++ glibc-package/branches/glibc-2.21/debian/changelog 2015-10-18 20:36:25 UTC (rev 6647)
@@ -66,6 +66,8 @@
build failure.
* debhelper.in/libc.preinst: fix up error message for too old Linux
kernels. Closes: #800846.
+ * patches/any/cvs-ld_pointer_guard.diff: new patch from upstream to
+ unconditionally disable LD_POINTER_GUARD. Closes: #798316, #801691.
[ Steven Chamberlain ]
* sysdeps/kfreebsd.mk: find kfreebsd-kernel-headers in multiarch path.
Added: glibc-package/branches/glibc-2.21/debian/patches/any/cvs-ld_pointer_guard.diff
===================================================================
--- glibc-package/branches/glibc-2.21/debian/patches/any/cvs-ld_pointer_guard.diff (rev 0)
+++ glibc-package/branches/glibc-2.21/debian/patches/any/cvs-ld_pointer_guard.diff 2015-10-18 20:36:25 UTC (rev 6647)
@@ -0,0 +1,62 @@
+2015-10-15 Florian Weimer <fweimer@redhat.com>
+
+ [BZ #18928]
+ * sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Remove
+ _dl_pointer_guard member.
+ * elf/rtld.c (_rtld_global_ro): Remove _dl_pointer_guard
+ initializer.
+ (security_init): Always set up pointer guard.
+ (process_envvars): Do not process LD_POINTER_GUARD.
+
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -162,7 +162,6 @@ struct rtld_global_ro _rtld_global_ro attribute_relro =
+ ._dl_hwcap_mask = HWCAP_IMPORTANT,
+ ._dl_lazy = 1,
+ ._dl_fpu_control = _FPU_DEFAULT,
+- ._dl_pointer_guard = 1,
+ ._dl_pagesize = EXEC_PAGESIZE,
+ ._dl_inhibit_cache = 0,
+
+@@ -709,15 +708,12 @@ security_init (void)
+ #endif
+
+ /* Set up the pointer guard as well, if necessary. */
+- if (GLRO(dl_pointer_guard))
+- {
+- uintptr_t pointer_chk_guard = _dl_setup_pointer_guard (_dl_random,
+- stack_chk_guard);
++ uintptr_t pointer_chk_guard
++ = _dl_setup_pointer_guard (_dl_random, stack_chk_guard);
+ #ifdef THREAD_SET_POINTER_GUARD
+- THREAD_SET_POINTER_GUARD (pointer_chk_guard);
++ THREAD_SET_POINTER_GUARD (pointer_chk_guard);
+ #endif
+- __pointer_chk_guard_local = pointer_chk_guard;
+- }
++ __pointer_chk_guard_local = pointer_chk_guard;
+
+ /* We do not need the _dl_random value anymore. The less
+ information we leave behind, the better, so clear the
+@@ -2471,9 +2467,6 @@ process_envvars (enum mode *modep)
+ GLRO(dl_use_load_bias) = envline[14] == '1' ? -1 : 0;
+ break;
+ }
+-
+- if (memcmp (envline, "POINTER_GUARD", 13) == 0)
+- GLRO(dl_pointer_guard) = envline[14] != '0';
+ break;
+
+ case 14:
+--- a/sysdeps/generic/ldsodefs.h
++++ b/sysdeps/generic/ldsodefs.h
+@@ -592,9 +592,6 @@ struct rtld_global_ro
+ /* List of auditing interfaces. */
+ struct audit_ifaces *_dl_audit;
+ unsigned int _dl_naudit;
+-
+- /* 0 if internal pointer values should not be guarded, 1 if they should. */
+- EXTERN int _dl_pointer_guard;
+ };
+ # define __rtld_global_attribute__
+ # if IS_IN (rtld)
Modified: glibc-package/branches/glibc-2.21/debian/patches/series
===================================================================
--- glibc-package/branches/glibc-2.21/debian/patches/series 2015-10-18 20:36:20 UTC (rev 6646)
+++ glibc-package/branches/glibc-2.21/debian/patches/series 2015-10-18 20:36:25 UTC (rev 6647)
@@ -267,3 +267,4 @@
any/cvs-make-typo.diff
any/cvs-logbl-accuracy.diff
any/local-math-logb.diff
+any/cvs-ld_pointer_guard.diff
Reply to: