From 84fc05acc038a6b807ad20c504ee24f80f7ed6f1 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Tue, 22 Oct 2024 19:00:08 -0500 Subject: [PATCH] fixes --- .../src/drives/fuse/fuse_drive.cpp | 66 +++++++++---------- .../repertory_test/src/fuse_drive_test.cpp | 22 +++---- 2 files changed, 43 insertions(+), 45 deletions(-) diff --git a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp index 36fdfeb9..70fa8421 100644 --- a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp @@ -67,7 +67,7 @@ auto fuse_drive::chmod_impl(std::string api_path, mode_t mode, auto fuse_drive::chmod_impl(std::string api_path, mode_t mode) -> api_error { #endif // FUSE_USE_VERSION >= 30 return check_and_perform(api_path, X_OK, [&](api_meta_map &) -> api_error { - if ((mode & (S_IGID | S_IUID | S_ISVTX) != 0) && + if (((mode & (S_ISGID | S_ISUID | S_ISVTX)) != 0) && (get_effective_uid() != 0)) { return api_error::permission_denied; } @@ -81,8 +81,8 @@ auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid, struct fuse_file_info * /*file_info*/) -> api_error { #else -auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid) - -> api_error { +auto fuse_drive::chown_impl(std::string api_path, uid_t uid, + gid_t gid) -> api_error { #endif return check_and_perform( api_path, X_OK, [&](api_meta_map &meta) -> api_error { @@ -454,8 +454,8 @@ auto fuse_drive::getattr_impl(std::string api_path, struct stat *st, struct fuse_file_info * /*file_info*/) -> api_error { #else -auto fuse_drive::getattr_impl(std::string api_path, struct stat *st) - -> api_error { +auto fuse_drive::getattr_impl(std::string api_path, + struct stat *st) -> api_error { #endif const auto parent = utils::path::get_parent_api_path(api_path); @@ -537,8 +537,8 @@ auto fuse_drive::getxtimes_impl(std::string api_path, struct timespec *bkuptime, #endif // __APPLE__ #if FUSE_USE_VERSION >= 30 -auto fuse_drive::init_impl(struct fuse_conn_info *conn, struct fuse_config *cfg) - -> void * { +auto fuse_drive::init_impl(struct fuse_conn_info *conn, + struct fuse_config *cfg) -> void * { #else void *fuse_drive::init_impl(struct fuse_conn_info *conn) { #endif @@ -763,9 +763,8 @@ auto fuse_drive::release_impl(std::string /*api_path*/, return api_error::success; } -auto fuse_drive::releasedir_impl(std::string /*api_path*/, - struct fuse_file_info *file_info) - -> api_error { +auto fuse_drive::releasedir_impl( + std::string /*api_path*/, struct fuse_file_info *file_info) -> api_error { auto iter = directory_cache_->get_directory(file_info->fh); if (iter == nullptr) { return api_error::invalid_handle; @@ -783,8 +782,8 @@ auto fuse_drive::rename_directory(const std::string &from_api_path, } auto fuse_drive::rename_file(const std::string &from_api_path, - const std::string &to_api_path, bool overwrite) - -> int { + const std::string &to_api_path, + bool overwrite) -> int { const auto res = fm_->rename_file(from_api_path, to_api_path, overwrite); errno = std::abs(utils::from_api_error(res)); return (res == api_error::success) ? 0 : -1; @@ -794,8 +793,8 @@ auto fuse_drive::rename_file(const std::string &from_api_path, auto fuse_drive::rename_impl(std::string from_api_path, std::string to_api_path, unsigned int /*flags*/) -> api_error { #else -auto fuse_drive::rename_impl(std::string from_api_path, std::string to_api_path) - -> api_error { +auto fuse_drive::rename_impl(std::string from_api_path, + std::string to_api_path) -> api_error { #endif auto res = check_parent_access(to_api_path, W_OK | X_OK); if (res != api_error::success) { @@ -902,15 +901,15 @@ auto fuse_drive::getxattr_impl(std::string api_path, const char *name, } #else // __APPLE__ auto fuse_drive::getxattr_impl(std::string api_path, const char *name, - char *value, size_t size, int &attribute_size) - -> api_error { + char *value, size_t size, + int &attribute_size) -> api_error { return getxattr_common(api_path, name, value, size, attribute_size, nullptr); } #endif // __APPLE__ auto fuse_drive::listxattr_impl(std::string api_path, char *buffer, size_t size, - int &required_size, bool &return_size) - -> api_error { + int &required_size, + bool &return_size) -> api_error { const auto check_size = (size == 0); auto res = check_parent_access(api_path, X_OK); @@ -949,8 +948,8 @@ auto fuse_drive::listxattr_impl(std::string api_path, char *buffer, size_t size, return res; } -auto fuse_drive::removexattr_impl(std::string api_path, const char *name) - -> api_error { +auto fuse_drive::removexattr_impl(std::string api_path, + const char *name) -> api_error { std::string attribute_name; #if defined(__APPLE__) auto res = parse_xattr_parameters(name, 0, attribute_name, api_path); @@ -978,8 +977,8 @@ auto fuse_drive::setxattr_impl(std::string api_path, const char *name, uint32_t position) -> api_error { #else // __APPLE__ auto fuse_drive::setxattr_impl(std::string api_path, const char *name, - const char *value, size_t size, int flags) - -> api_error { + const char *value, size_t size, + int flags) -> api_error { #endif std::string attribute_name; #if defined(__APPLE__) @@ -1054,8 +1053,8 @@ void fuse_drive::set_item_meta(const std::string &api_path, } #if defined(__APPLE__) -auto fuse_drive::setattr_x_impl(std::string api_path, struct setattr_x *attr) - -> api_error { +auto fuse_drive::setattr_x_impl(std::string api_path, + struct setattr_x *attr) -> api_error { bool exists{}; auto res = provider_.is_file(api_path, exists); if (res != api_error::success) { @@ -1109,7 +1108,7 @@ auto fuse_drive::setattr_x_impl(std::string api_path, struct setattr_x *attr) ts[0].tv_sec = attr->acctime.tv_sec; ts[0].tv_nsec = attr->acctime.tv_nsec; } else { - struct timeval tv{}; + struct timeval tv {}; gettimeofday(&tv, NULL); ts[0].tv_sec = tv.tv_sec; ts[0].tv_nsec = tv.tv_usec * 1000; @@ -1154,9 +1153,8 @@ auto fuse_drive::setattr_x_impl(std::string api_path, struct setattr_x *attr) return api_error::success; } -auto fuse_drive::setbkuptime_impl(std::string api_path, - const struct timespec *bkuptime) - -> api_error { +auto fuse_drive::setbkuptime_impl( + std::string api_path, const struct timespec *bkuptime) -> api_error { return check_and_perform( api_path, X_OK, [&](api_meta_map &meta) -> api_error { const auto nanos = bkuptime->tv_nsec + @@ -1192,8 +1190,8 @@ auto fuse_drive::setvolname_impl(const char * /*volname*/) -> api_error { return api_error::success; } -auto fuse_drive::statfs_x_impl(std::string /*api_path*/, struct statfs *stbuf) - -> api_error { +auto fuse_drive::statfs_x_impl(std::string /*api_path*/, + struct statfs *stbuf) -> api_error { if (statfs(&config_.get_cache_directory()[0], stbuf) != 0) { return api_error::os_error; } @@ -1218,8 +1216,8 @@ auto fuse_drive::statfs_x_impl(std::string /*api_path*/, struct statfs *stbuf) return api_error::success; } #else // __APPLE__ -auto fuse_drive::statfs_impl(std::string /*api_path*/, struct statvfs *stbuf) - -> api_error { +auto fuse_drive::statfs_impl(std::string /*api_path*/, + struct statvfs *stbuf) -> api_error { if (statvfs(config_.get_cache_directory().data(), stbuf) != 0) { return api_error::os_error; } @@ -1300,8 +1298,8 @@ auto fuse_drive::utimens_impl(std::string api_path, const struct timespec tv[2], struct fuse_file_info * /*file_info*/) -> api_error { #else -auto fuse_drive::utimens_impl(std::string api_path, const struct timespec tv[2]) - -> api_error { +auto fuse_drive::utimens_impl(std::string api_path, + const struct timespec tv[2]) -> api_error { #endif api_meta_map meta; auto res = provider_.get_item_meta(api_path, meta); diff --git a/repertory/repertory_test/src/fuse_drive_test.cpp b/repertory/repertory_test/src/fuse_drive_test.cpp index e4267920..6dad1675 100644 --- a/repertory/repertory_test/src/fuse_drive_test.cpp +++ b/repertory/repertory_test/src/fuse_drive_test.cpp @@ -524,7 +524,7 @@ TYPED_TEST(fuse_test, can_chmod_if_owner) { EXPECT_EQ(0, chmod(file_path.c_str(), S_IRUSR | S_IWUSR)); std::this_thread::sleep_for(SLEEP_SECONDS); - struct stat64 unix_st{}; + struct stat64 unix_st {}; stat64(file_path.c_str(), &unix_st); EXPECT_EQ(static_cast(S_IRUSR | S_IWUSR), ACCESSPERMS & unix_st.st_mode); @@ -546,7 +546,7 @@ TYPED_TEST(fuse_test, can_not_chmod_setgid_if_not_root) { std::string file_name{"chmod_test"}; auto file_path = this->create_file_and_test(file_name); - EXPECT_EQ(-1, chmod(file_path.c_str(), S_IRUSR | S_IWUSR | S_IGID)); + EXPECT_EQ(-1, chmod(file_path.c_str(), S_IRUSR | S_IWUSR | S_ISGID)); EXPECT_EQ(EPERM, errno); this->unlink_file_and_test(file_path); @@ -556,7 +556,7 @@ TYPED_TEST(fuse_test, can_not_chmod_setuid_if_not_root) { std::string file_name{"chmod_test"}; auto file_path = this->create_file_and_test(file_name); - EXPECT_EQ(-1, chmod(file_path.c_str(), S_IRUSR | S_IWUSR | S_IUID)); + EXPECT_EQ(-1, chmod(file_path.c_str(), S_IRUSR | S_IWUSR | S_ISUID)); EXPECT_EQ(EPERM, errno); this->unlink_file_and_test(file_path); @@ -576,13 +576,13 @@ TYPED_TEST(fuse_test, can_chown_group_if_owner_and_a_member_of_the_group) { std::string file_name{"chown_test"}; auto file_path = this->create_file_and_test(file_name); - struct stat64 unix_st{}; + struct stat64 unix_st {}; EXPECT_EQ(0, stat64(file_path.c_str(), &unix_st)); EXPECT_EQ(0, chown(file_path.c_str(), static_cast(-1), getgid())); std::this_thread::sleep_for(SLEEP_SECONDS); - struct stat64 unix_st2{}; + struct stat64 unix_st2 {}; stat64(file_path.c_str(), &unix_st2); EXPECT_EQ(getgid(), unix_st2.st_gid); EXPECT_EQ(unix_st.st_uid, unix_st2.st_uid); @@ -595,13 +595,13 @@ TYPED_TEST(fuse_test, std::string file_name{"chown_test"}; auto file_path = this->create_file_and_test(file_name); - struct stat64 unix_st{}; + struct stat64 unix_st {}; EXPECT_EQ(0, stat64(file_path.c_str(), &unix_st)); EXPECT_EQ(-1, chown(file_path.c_str(), static_cast(-1), 0)); EXPECT_EQ(EPERM, errno); - struct stat64 unix_st2{}; + struct stat64 unix_st2 {}; stat64(file_path.c_str(), &unix_st2); EXPECT_EQ(unix_st.st_gid, unix_st2.st_gid); EXPECT_EQ(unix_st.st_uid, unix_st2.st_uid); @@ -613,13 +613,13 @@ TYPED_TEST(fuse_test, can_not_chown_group_if_not_the_owner) { std::string file_name{"chown_test"}; auto file_path = this->create_root_file(file_name); - struct stat64 unix_st{}; + struct stat64 unix_st {}; EXPECT_EQ(0, stat64(file_path.c_str(), &unix_st)); EXPECT_EQ(-1, chown(file_path.c_str(), static_cast(-1), getgid())); EXPECT_EQ(EPERM, errno); - struct stat64 unix_st2{}; + struct stat64 unix_st2 {}; stat64(file_path.c_str(), &unix_st2); EXPECT_EQ(unix_st.st_gid, unix_st2.st_gid); EXPECT_EQ(unix_st.st_uid, unix_st2.st_uid); @@ -631,13 +631,13 @@ TYPED_TEST(fuse_test, can_not_chown_user_if_not_root) { std::string file_name{"chown_test"}; auto file_path = this->create_file_and_test(file_name); - struct stat64 unix_st{}; + struct stat64 unix_st {}; EXPECT_EQ(0, stat64(file_path.c_str(), &unix_st)); EXPECT_EQ(-1, chown(file_path.c_str(), 0, static_cast(-1))); EXPECT_EQ(EPERM, errno); - struct stat64 unix_st2{}; + struct stat64 unix_st2 {}; stat64(file_path.c_str(), &unix_st2); EXPECT_EQ(unix_st.st_gid, unix_st2.st_gid); EXPECT_EQ(unix_st.st_uid, unix_st2.st_uid);