From 00d7a3777369bac3d8d44152dde2bb7381984ef6 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Mon, 17 Jul 2017 09:58:29 +0100 Subject: [AArch64] Fix out of bound array access regression Partially revert ea01a4da219011f4a4db97eef3c5bfc2f6e8fc6b "aarch64: Add hwcap string routines" because _dl_procinfo cannot be future proof and avoid oob access in _dl_hwcap_string. --- sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h | 38 ++++++--------------------- 1 file changed, 8 insertions(+), 30 deletions(-) (limited to 'sysdeps/unix/sysv/linux/aarch64') diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h index 04fc6be0a3..44dc296d3e 100644 --- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h +++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h @@ -25,36 +25,7 @@ #include /* We cannot provide a general printing function. */ -static inline int -__attribute__ ((unused)) -_dl_procinfo (unsigned int type, unsigned long int word) -{ - /* This table should match the information from arch/arm64/kernel/cpuinfo.c - in the kernel sources. */ - int i; - - /* Fallback to unknown output mechanism. */ - if (type == AT_HWCAP2) - return -1; - - _dl_printf ("AT_HWCAP: "); - - for (i = 0; i < 32; ++i) - if ((word >> i) & 1) - _dl_printf (" %s", GLRO(dl_aarch64_cap_flags)[i]); - - _dl_printf ("\n"); - - return 0; -} - -static inline const char * -__attribute__ ((unused)) -_dl_hwcap_string (int idx) -{ - return GLRO(dl_aarch64_cap_flags)[idx]; -}; - +#define _dl_procinfo(type, word) -1 /* Number of HWCAP bits set. */ #define _DL_HWCAP_COUNT 13 @@ -66,6 +37,13 @@ _dl_hwcap_string (int idx) library search. */ #define HWCAP_IMPORTANT HWCAP_CPUID +static inline const char * +__attribute__ ((unused)) +_dl_hwcap_string (int idx) +{ + return (unsigned)idx < _DL_HWCAP_COUNT ? GLRO(dl_aarch64_cap_flags)[idx] : ""; +}; + static inline int __attribute__ ((unused)) _dl_string_hwcap (const char *str) -- cgit 1.4.1