From: Zbigniew Jędrzejewski-Szmek Date: Sun, 25 Mar 2018 20:26:13 +0000 (+0200) Subject: fuzz-unit-file: add __has_feature(memory_sanitizer) when skipping ListenNetlink= X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=7c9bebfd22b33d026e66227d9b3a2b33d4a3265b;p=elogind.git fuzz-unit-file: add __has_feature(memory_sanitizer) when skipping ListenNetlink= https://clang.llvm.org/docs/MemorySanitizer.html#id5 documents this check as the way to detect MemorySanitizer at compilation time. We only need to skip the test if MemorySanitizer is used. Also, use this condition in cg_slice_to_path(). There, the code that is conditionalized is not harmful in any way (it's just unnecessary), so remove the FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION condition. Fixes #8482. --- diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index dbc2938c0..11d979529 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -2086,7 +2086,7 @@ int cg_slice_to_path(const char *unit, char **ret) { _cleanup_free_ char *escaped = NULL; char n[dash - p + sizeof(".slice")]; -#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#if HAS_FEATURE_MEMORY_SANITIZER /* msan doesn't instrument stpncpy, so it thinks * n is later used unitialized: * https://github.com/google/sanitizers/issues/926 diff --git a/src/basic/macro.h b/src/basic/macro.h index 3a6fc6f58..8e61ff068 100644 --- a/src/basic/macro.h +++ b/src/basic/macro.h @@ -63,6 +63,17 @@ #endif #endif +#if !defined(HAS_FEATURE_MEMORY_SANITIZER) +# if defined(__has_feature) +# if __has_feature(memory_sanitizer) +# define HAS_FEATURE_MEMORY_SANITIZER 1 +# endif +# endif +# if !defined(HAS_FEATURE_MEMORY_SANITIZER) +# define HAS_FEATURE_MEMORY_SANITIZER 0 +# endif +#endif + /* Temporarily disable some warnings */ #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT \ _Pragma("GCC diagnostic push"); \ @@ -427,7 +438,6 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) { static inline void func##p(type *p) { \ if (*p) \ func(*p); \ - } \ - struct __useless_struct_to_allow_trailing_semicolon__ + } #include "log.h"