From: Siddhesh Poyarekar Date: Fri, 9 Jun 2017 08:48:11 +0000 (+0530) Subject: aarch64: Fix undefined behavior in _dl_procinfo X-Git-Tag: glibc-2.26~394 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c85cc2852367ea2db91ff6a1fc0f6fc0653788d;p=thirdparty%2Fglibc.git aarch64: Fix undefined behavior in _dl_procinfo 1 << 31 is undefined, so replace it with a cleaner check. Also remove magic numbers in comments. * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h: Remove mention of magic numbers in comments. (_dl_procinfo): Fix undefined behavior --- diff --git a/ChangeLog b/ChangeLog index 6c6ff131db0..006e7ac28ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-06-09 Siddhesh Poyarekar + + * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h: Remove + mention of magic numbers in comments. + (_dl_procinfo): Fix undefined behavior + 2017-06-08 Joseph Myers * conform/data/sys/wait.h-data (WIFCONTINUED): Do not expect for diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h index cdb36d33166..04fc6be0a37 100644 --- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h @@ -40,7 +40,7 @@ _dl_procinfo (unsigned int type, unsigned long int word) _dl_printf ("AT_HWCAP: "); for (i = 0; i < 32; ++i) - if (word & (1 << i)) + if ((word >> i) & 1) _dl_printf (" %s", GLRO(dl_aarch64_cap_flags)[i]); _dl_printf ("\n"); @@ -56,10 +56,10 @@ _dl_hwcap_string (int idx) }; -/* 13 HWCAP bits set. */ +/* Number of HWCAP bits set. */ #define _DL_HWCAP_COUNT 13 -/* Low 13 bits are allocated in HWCAP. */ +/* Offset of the last bit allocated in HWCAP. */ #define _DL_HWCAP_LAST 12 /* HWCAP_CPUID should be available by default to influence IFUNC as well as