aboutsummaryrefslogtreecommitdiff
path: root/elf/rtld.c
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@sourceware.org>2017-03-07 20:52:04 +0530
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-07-13 11:36:20 -0300
commitceeb0740ed04c48170f9f6f15fef55637ad84e1b (patch)
tree2adf4d58544aa760f7fe33a82dd1c3c6c32a0db8 /elf/rtld.c
parent24adabbe17d24b9cf4f42d81f546359f72515ce3 (diff)
downloadglibc-linaro/2.23/master.zip
glibc-linaro/2.23/master.tar.gz
glibc-linaro/2.23/master.tar.bz2
Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (bug #21209)linaro/2.23/master
The LD_HWCAP_MASK environment variable may alter the selection of function variants for some architectures. For AT_SECURE process it means that if an outdated routine has a bug that would otherwise not affect newer platforms by default, LD_HWCAP_MASK will allow that bug to be exploited. To be on the safe side, ignore and disable LD_HWCAP_MASK for setuid binaries. [BZ #21209] * elf/rtld.c (process_envvars): Ignore LD_HWCAP_MASK for AT_SECURE processes. * sysdeps/generic/unsecvars.h: Add LD_HWCAP_MASK. (cherry picked from commit 1c1243b6fc33c029488add276e56570a07803bfd)
Diffstat (limited to 'elf/rtld.c')
-rw-r--r--elf/rtld.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/elf/rtld.c b/elf/rtld.c
index 302bb63..8f56d6e 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -2553,7 +2553,8 @@ process_envvars (enum mode *modep)
case 10:
/* Mask for the important hardware capabilities. */
- if (memcmp (envline, "HWCAP_MASK", 10) == 0)
+ if (!__libc_enable_secure
+ && memcmp (envline, "HWCAP_MASK", 10) == 0)
GLRO(dl_hwcap_mask) = __strtoul_internal (&envline[11], NULL,
0, 0);
break;