diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bdabe4715e..9874ff4ed0 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 786f228c42..903287748b 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