This commit is contained in:
Scott E. Graves 2024-10-21 08:30:26 -05:00
parent 3c001c11ae
commit bd25904371

View File

@ -79,14 +79,22 @@ auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid,
auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid) auto fuse_drive::chown_impl(std::string api_path, uid_t uid, gid_t gid)
-> api_error { -> api_error {
#endif #endif
return check_and_perform(api_path, X_OK, return check_and_perform(
[&](api_meta_map &meta) -> api_error { api_path, X_OK, [&](api_meta_map &meta) -> api_error {
meta.clear(); meta.clear();
if (uid != static_cast<uid_t>(-1)) { if (uid != static_cast<uid_t>(-1)) {
if (get_effective_uid() != 0) {
return api_error::permission_denied;
}
meta[META_UID] = std::to_string(uid); meta[META_UID] = std::to_string(uid);
} }
if (gid != static_cast<gid_t>(-1)) { if (gid != static_cast<gid_t>(-1)) {
if (get_effective_uid() != 0) {
if (not utils::is_uid_member_of_group(get_effective_uid(), gid)) {
return api_error::permission_denied;
}
}
meta[META_GID] = std::to_string(gid); meta[META_GID] = std::to_string(gid);
} }