diff options
author | David S. Miller <davem@davemloft.net> | 2012-03-12 15:57:17 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-12 15:57:17 -0700 |
commit | 98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5 (patch) | |
tree | af5dadcad9baae2815c4a6f09a0ac2d826b658e4 | |
parent | b4b2eb5eae714b97d6a4315846e5fec72096806c (diff) | |
download | glibc-98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5.tar.gz glibc-98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5.tar.xz glibc-98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5.zip |
Fix another instance of the _dl_random masking bug, plus coding style.
* sysdeps/generic/dl-osinfo.h (_dl_setup_stack_chk_guard): Fix masking out of the most significant byte of random value used. * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): Fix coding style in previous change.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/generic/dl-osinfo.h | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/dl-osinfo.h | 4 |
3 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index 2d9dd85cf7..e9ea42a673 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-03-12 David S. Miller <davem@davemloft.net> + * sysdeps/generic/dl-osinfo.h (_dl_setup_stack_chk_guard): Fix + masking out of the most significant byte of random value used. + * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): + Fix coding style in previous change. + * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_CLONE_THREAD_FLAGS): Set on sparc when 2.5.64 and later. (__ASSUME_TGKILL): Set on sparc when 2.6.1 and later, simplify diff --git a/sysdeps/generic/dl-osinfo.h b/sysdeps/generic/dl-osinfo.h index 548fc4666a..983cd557b0 100644 --- a/sysdeps/generic/dl-osinfo.h +++ b/sysdeps/generic/dl-osinfo.h @@ -37,9 +37,9 @@ _dl_setup_stack_chk_guard (void *dl_random) { memcpy (ret.bytes, dl_random, sizeof (ret)); #if BYTE_ORDER == LITTLE_ENDIAN - ret.num &= ~0xff; + ret.num &= ~(uintptr_t) 0xff; #elif BYTE_ORDER == BIG_ENDIAN - ret.num &= ~(0xff << (8 * (sizeof (ret) - 1))); + ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1))); #else # error "BYTE_ORDER unknown" #endif diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h index 1ff8a2f6a2..d0f41a7b2c 100644 --- a/sysdeps/unix/sysv/linux/dl-osinfo.h +++ b/sysdeps/unix/sysv/linux/dl-osinfo.h @@ -95,9 +95,9 @@ _dl_setup_stack_chk_guard (void *dl_random) directly and not use the kernel-provided data to seed a PRNG. */ memcpy (ret.bytes, dl_random, sizeof (ret)); #if BYTE_ORDER == LITTLE_ENDIAN - ret.num &= ~(uintptr_t)0xff; + ret.num &= ~(uintptr_t) 0xff; #elif BYTE_ORDER == BIG_ENDIAN - ret.num &= ~((uintptr_t)0xff << (8 * (sizeof (ret) - 1))); + ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1))); #else # error "BYTE_ORDER unknown" #endif |