mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
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.
This commit is contained in:
@ -1,5 +1,10 @@
|
|||||||
2012-03-12 David S. Miller <davem@davemloft.net>
|
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
|
* sysdeps/unix/sysv/linux/kernel-features.h
|
||||||
(__ASSUME_CLONE_THREAD_FLAGS): Set on sparc when 2.5.64 and later.
|
(__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
|
(__ASSUME_TGKILL): Set on sparc when 2.6.1 and later, simplify
|
||||||
|
@ -37,9 +37,9 @@ _dl_setup_stack_chk_guard (void *dl_random)
|
|||||||
{
|
{
|
||||||
memcpy (ret.bytes, dl_random, sizeof (ret));
|
memcpy (ret.bytes, dl_random, sizeof (ret));
|
||||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||||
ret.num &= ~0xff;
|
ret.num &= ~(uintptr_t) 0xff;
|
||||||
#elif BYTE_ORDER == BIG_ENDIAN
|
#elif BYTE_ORDER == BIG_ENDIAN
|
||||||
ret.num &= ~(0xff << (8 * (sizeof (ret) - 1)));
|
ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1)));
|
||||||
#else
|
#else
|
||||||
# error "BYTE_ORDER unknown"
|
# error "BYTE_ORDER unknown"
|
||||||
#endif
|
#endif
|
||||||
|
@ -95,9 +95,9 @@ _dl_setup_stack_chk_guard (void *dl_random)
|
|||||||
directly and not use the kernel-provided data to seed a PRNG. */
|
directly and not use the kernel-provided data to seed a PRNG. */
|
||||||
memcpy (ret.bytes, dl_random, sizeof (ret));
|
memcpy (ret.bytes, dl_random, sizeof (ret));
|
||||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||||
ret.num &= ~(uintptr_t)0xff;
|
ret.num &= ~(uintptr_t) 0xff;
|
||||||
#elif BYTE_ORDER == BIG_ENDIAN
|
#elif BYTE_ORDER == BIG_ENDIAN
|
||||||
ret.num &= ~((uintptr_t)0xff << (8 * (sizeof (ret) - 1)));
|
ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1)));
|
||||||
#else
|
#else
|
||||||
# error "BYTE_ORDER unknown"
|
# error "BYTE_ORDER unknown"
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user