From 185026706d926d1f94bd1c42a11dd83e6b8e74ec Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 31 Jan 2019 23:50:25 -0500 Subject: stat: Work around msan not knowing about statx() --- stat.c | 7 +++++++ util.h | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/stat.c b/stat.c index 47585b8..d223ff8 100644 --- a/stat.c +++ b/stat.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -161,6 +162,12 @@ static int bfs_stat_impl(int at_fd, const char *at_path, int at_flags, enum bfs_ * Wrapper for the statx() system call, which had no glibc wrapper prior to 2.28. */ static int bfs_statx(int at_fd, const char *at_path, int at_flags, unsigned int mask, struct statx *buf) { + // -fsanitize=memory doesn't know about statx(), so tell it the memory + // got initialized +#if BFS_HAS_FEATURE(memory_sanitizer, false) + memset(buf, 0, sizeof(*buf)); +#endif + #if HAVE_STATX return statx(at_fd, at_path, at_flags, mask, buf); #else diff --git a/util.h b/util.h index d96b79d..6a51806 100644 --- a/util.h +++ b/util.h @@ -1,6 +1,6 @@ /**************************************************************************** * bfs * - * Copyright (C) 2016-2018 Tavian Barnes * + * Copyright (C) 2016-2019 Tavian Barnes * * * * Permission to use, copy, modify, and/or distribute this software for any * * purpose with or without fee is hereby granted. * @@ -27,6 +27,12 @@ // Some portability concerns +#ifdef __has_feature +# define BFS_HAS_FEATURE(feature, fallback) __has_feature(feature) +#else +# define BFS_HAS_FEATURE(feature, fallback) fallback +#endif + #ifdef __has_include # define BFS_HAS_INCLUDE(header, fallback) __has_include(header) #else -- cgit v1.2.3