From: Ondřej Surý Date: Thu, 8 Sep 2022 05:33:31 +0000 (+0200) Subject: Disable stringop-overread with gcc-11+ Address Sanitizer X-Git-Tag: v9.19.6~53^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=eae4947cc5789d58443c6cb9f05cdb0b2038fd02;p=thirdparty%2Fbind9.git Disable stringop-overread with gcc-11+ Address Sanitizer When Address Sanitizer is enabled in gcc-11+, number of false positives might appear like this: netmgr/udp.c: In function 'isc__nm_udp_send': netmgr/udp.c:729:13: warning: 'uv_udp_send' reading 16 bytes from a region of size 8 [-Wstringop-overread] 729 | r = uv_udp_send(&uvreq->uv_req.udp_send, &sock->uv_handle.udp, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 730 | &uvreq->uvbuf, 1, sa, udp_send_cb); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ netmgr/udp.c:729:13: note: referencing argument 3 of type 'const uv_buf_t[0]' In file included from ./include/isc/uv.h:17, from ./include/isc/barrier.h:31, from netmgr/udp.c:17: /usr/include/uv.h:711:15: note: in a call to function 'uv_udp_send' 711 | UV_EXTERN int uv_udp_send(uv_udp_send_t* req, | ^~~~~~~~~~~ Disable the warning globally in the autoconf, instead of just locally in a single CI job, as it might affect people outside our GitLab CI. --- diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bdabe4715e2..9874ff4ed04 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -968,7 +968,7 @@ unit:gcc:jammy:amd64: gcc:asan: variables: CC: gcc - CFLAGS: "${CFLAGS_COMMON} -fsanitize=address,undefined -Wno-error=stringop-overread" + CFLAGS: "${CFLAGS_COMMON} -fsanitize=address,undefined" LDFLAGS: "-fsanitize=address,undefined" EXTRA_CONFIGURE: "--with-libidn2 --without-jemalloc" <<: *fedora_35_amd64_image diff --git a/configure.ac b/configure.ac index 786f228c429..903287748b3 100644 --- a/configure.ac +++ b/configure.ac @@ -119,6 +119,16 @@ STD_CFLAGS="-Wall -Wextra -Wwrite-strings -Wpointer-arith -Wno-missing-field-ini # These should be always errors STD_CFLAGS="$STD_CFLAGS -Werror=implicit-function-declaration -Werror=missing-prototypes -Werror=format-security -Werror=parentheses -Werror=implicit -Werror=strict-prototypes -Werror=vla" +# Disable false positives generated by GCC 11+ and ASAN +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], + [[#if __GNUC__ >= 11 && defined(__SANITIZE_ADDRESS__) + #error Address Sanitizer enabled + #endif + ]])], + [], + [STD_CFLAGS="$STD_CFLAGS -Wno-stringop-overread"]) + STD_LDFLAGS="" # ... except in test code