aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-03-12 15:57:17 -0700
committerDavid S. Miller <davem@davemloft.net>2012-03-12 15:57:17 -0700
commit98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5 (patch)
treeaf5dadcad9baae2815c4a6f09a0ac2d826b658e4
parentb4b2eb5eae714b97d6a4315846e5fec72096806c (diff)
downloadglibc-98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5.zip
glibc-98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5.tar.gz
glibc-98bb2f1cd2b6eb794ecaf5ce4fcc3c79ee4df3e5.tar.bz2
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--ChangeLog5
-rw-r--r--sysdeps/generic/dl-osinfo.h4
-rw-r--r--sysdeps/unix/sysv/linux/dl-osinfo.h4
3 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 2d9dd85..e9ea42a 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 548fc46..983cd55 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 1ff8a2f..d0f41a7 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