diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2021-03-28 11:16:45 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2021-03-28 11:17:16 -0400 |
commit | cd4b0f1d87e836e78c2de92623e20284a057b500 (patch) | |
tree | 0566ed5557f1fdd4ae012750354dec14b2b9ad10 | |
parent | f9c18e80595fae26f1d45dab5427c7122d15cb35 (diff) | |
download | bfs-cd4b0f1d87e836e78c2de92623e20284a057b500.tar.xz |
fsade: Fix msan false positive in bfs_check_acl_type()
-rw-r--r-- | dir.c | 2 | ||||
-rw-r--r-- | fsade.c | 10 | ||||
-rw-r--r-- | stat.c | 2 |
3 files changed, 10 insertions, 4 deletions
@@ -229,8 +229,8 @@ int bfs_readdir(struct bfs_dir *dir, struct bfs_dirent *de) { char *buf = (char *)(dir + 1); if (dir->pos >= dir->size) { - // Make sure msan knows the buffer is initialized #if BFS_HAS_FEATURE(memory_sanitizer, false) + // Make sure msan knows the buffer is initialized memset(buf, 0, BUF_SIZE); #endif @@ -171,6 +171,12 @@ static int bfs_check_acl_type(acl_t acl, acl_type_t type) { #if __FreeBSD__ int trivial; + +#if BFS_HAS_FEATURE(memory_sanitizer, false) + // msan seems to be missing an interceptor for acl_is_trivial_np() + trivial = 0; +#endif + if (acl_is_trivial_np(acl, &trivial) < 0) { return -1; } else if (trivial) { @@ -178,9 +184,9 @@ static int bfs_check_acl_type(acl_t acl, acl_type_t type) { } else { return 1; } -#endif - +#else // !__FreeBSD__ return bfs_check_posix1e_acl(acl, true); +#endif } int bfs_check_acl(const struct BFTW *ftwbuf) { @@ -172,9 +172,9 @@ 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) { +#if BFS_HAS_FEATURE(memory_sanitizer, false) // -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 |