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.
This commit is contained in:
parent
483ed8a6a0
commit
989290dbf1
|
@ -1976,7 +1976,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
|
||||
|
|
|
@ -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"); \
|
||||
|
|
|
@ -48,7 +48,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
|
|||
|
||||
ll = l + strspn(l, WHITESPACE);
|
||||
|
||||
if (startswith(ll, "ListenNetlink=")) {
|
||||
if (HAS_FEATURE_MEMORY_SANITIZER && startswith(ll, "ListenNetlink=")) {
|
||||
/* ListenNetlink causes a false positive in msan,
|
||||
* let's skip this for now. */
|
||||
log_notice("Skipping test because ListenNetlink= is present");
|
||||
|
|
Loading…
Reference in New Issue