diff options
Diffstat (limited to 'netfs/daemon/modeCheck.cpp')
-rw-r--r-- | netfs/daemon/modeCheck.cpp | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/netfs/daemon/modeCheck.cpp b/netfs/daemon/modeCheck.cpp index 58ade75..6e65888 100644 --- a/netfs/daemon/modeCheck.cpp +++ b/netfs/daemon/modeCheck.cpp @@ -2,12 +2,10 @@ #include <entCache.h> #include <exceptions.h> -ModeCheck::ModeCheck(const NetFS::ReqEnv & re, const std::filesystem::path & r, const EntCache<User> & u, const EntCache<Group> & g) : +ModeCheck::ModeCheck(const NetFS::ReqEnv & re, const std::filesystem::path & r, const EntCache<User> & u, + const EntCache<Group> & g) : myu(u.getEntry(re.user)->id), - myg(g.getEntry(re.grp)->id), - root(r), - userLookup(u), - groupLookup(g) + myg(g.getEntry(re.grp)->id), root(r), userLookup(u), groupLookup(g) { } @@ -64,10 +62,11 @@ ModeCheck::AssertWritePerms(const std::filesystem::path & p) const } } - struct stat +struct stat ModeCheck::lstat(const std::filesystem::path & p) { - struct stat s {}; + struct stat s { + }; if (::lstat(p.c_str(), &s) != 0) { throw NetFS::SystemError(errno); } @@ -86,11 +85,9 @@ ModeCheck::ReadableBy(const struct stat & s, uid_t u, gid_t g) const if (s.st_mode & S_IRUSR && s.st_uid == u) { return true; } - if (s.st_mode & S_IRGRP && - (s.st_gid == g - || userLookup.getEntry(u)->group == s.st_gid - || groupLookup.getEntry(s.st_gid)->hasMember(u))) - { + if (s.st_mode & S_IRGRP + && (s.st_gid == g || userLookup.getEntry(u)->group == s.st_gid + || groupLookup.getEntry(s.st_gid)->hasMember(u))) { return true; } return false; @@ -108,10 +105,9 @@ ModeCheck::WritableBy(const struct stat & s, uid_t u, gid_t g) const if (s.st_mode & S_IWUSR && s.st_uid == u) { return true; } - if (s.st_mode & S_IWGRP && - (s.st_gid == g - || userLookup.getEntry(u)->group == s.st_gid - || groupLookup.getEntry(s.st_gid)->hasMember(u))) { + if (s.st_mode & S_IWGRP + && (s.st_gid == g || userLookup.getEntry(u)->group == s.st_gid + || groupLookup.getEntry(s.st_gid)->hasMember(u))) { return true; } return false; @@ -129,12 +125,10 @@ ModeCheck::ExecutableBy(const struct stat & s, uid_t u, gid_t g) const if (s.st_mode & S_IXUSR && s.st_uid == u) { return true; } - if (s.st_mode & S_IXGRP && - (s.st_gid == g - || userLookup.getEntry(u)->group == s.st_gid - || groupLookup.getEntry(s.st_gid)->hasMember(u))) { + if (s.st_mode & S_IXGRP + && (s.st_gid == g || userLookup.getEntry(u)->group == s.st_gid + || groupLookup.getEntry(s.st_gid)->hasMember(u))) { return true; } return false; } - |