From a3521ff172f0139e42fe9f7fc3cd31e768e43168 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Tue, 19 Jul 2022 15:29:50 -0700 Subject: [PATCH] wiphy: fix strange compiler bug with gcc 11.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There appears to be a compiler bug with gcc 11.2 which thinks the vht_mcs_set is a zero length array, and the memset of size 8 is out of bounds. This is only seen once an element is added to 'struct band'. In file included from /usr/include/string.h:519, from src/wiphy.c:34: In function ‘memset’, inlined from ‘band_new_from_message’ at src/wiphy.c:1300:2, inlined from ‘parse_supported_bands’ at src/wiphy.c:1423:11, inlined from ‘wiphy_parse_attributes’ at src/wiphy.c:1596:5, inlined from ‘wiphy_update_from_genl’ at src/wiphy.c:1773:2: /usr/include/bits/string_fortified.h:59:10: error: ‘__builtin_memset’ offset [0, 7] is out of the bounds [0, 0] [-Werror=array-bounds] 59 | return __builtin___memset_chk (__dest, __ch, __len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 | __glibc_objsize0 (__dest)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~ --- src/wiphy.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/wiphy.c b/src/wiphy.c index f83353ed..696064c0 100644 --- a/src/wiphy.c +++ b/src/wiphy.c @@ -1285,7 +1285,15 @@ static struct band *band_new_from_message(struct l_genl_attr *band) toalloc = sizeof(struct band) + count * sizeof(uint8_t); ret = l_malloc(toalloc); memset(ret, 0, toalloc); + +#if __GNUC__ == 11 && __GNUC_MINOR__ == 2 +_Pragma("GCC diagnostic push") +_Pragma("GCC diagnostic ignored \"-Warray-bounds\"") +#endif memset(ret->vht_mcs_set, 0xff, sizeof(ret->vht_mcs_set)); +#if __GNUC__ == 11 && __GNUC_MINOR__ == 2 +_Pragma("GCC diagnostic pop") +#endif return ret; }