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 <fwei...@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