]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix another instance of the _dl_random masking bug, plus coding style.
authorDavid S. Miller <davem@davemloft.net>
Mon, 12 Mar 2012 22:57:17 +0000 (15:57 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Mar 2012 22:57:17 +0000 (15:57 -0700)
* 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.

ChangeLog
sysdeps/generic/dl-osinfo.h
sysdeps/unix/sysv/linux/dl-osinfo.h

index 2d9dd85cf71da3e6811db2ca839c62cc448a14b8..e9ea42a6731f9394a72679e5def9940390582fcd 100644 (file)
--- 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
index 548fc4666a68e9304a3cc493a8014362bdd82974..983cd557b040f3614a1d1f60da292b1ae6cd2714 100644 (file)
@@ -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
index 1ff8a2f6a2804537454c3091f953c8191d10bcd7..d0f41a7b2c0c68cae64dc5bc76d27b1a5e654e58 100644 (file)
@@ -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