diff options
| -rw-r--r-- | netfs/daemon/daemon.cpp | 4 | ||||
| -rw-r--r-- | netfs/daemon/daemonVolume.cpp | 6 | ||||
| -rw-r--r-- | netfs/daemon/modeCheck.cpp | 6 | ||||
| -rw-r--r-- | netfs/daemon/modeCheck.h | 9 | 
4 files changed, 14 insertions, 11 deletions
diff --git a/netfs/daemon/daemon.cpp b/netfs/daemon/daemon.cpp index 20a8562..59f3638 100644 --- a/netfs/daemon/daemon.cpp +++ b/netfs/daemon/daemon.cpp @@ -95,7 +95,7 @@ TempPrivs::AssertRead(const boost::filesystem::path & p) const  	if (::lstat(p.string().c_str(), &s) != 0) {  		throw NetFS::SystemError(errno);  	} -	if (!ReadableBy(s, myu, myg)) { +	if (!ModeCheck::ReadableBy(s, myu, myg)) {  		throw NetFS::SystemError(EACCES);  	}  } @@ -110,7 +110,7 @@ TempPrivs::AssertWrite(const boost::filesystem::path & p) const  	if (::lstat(p.string().c_str(), &s) != 0) {  		throw NetFS::SystemError(errno);  	} -	if (!WritableBy(s, myu, myg)) { +	if (!ModeCheck::WritableBy(s, myu, myg)) {  		throw NetFS::SystemError(EACCES);  	}  } diff --git a/netfs/daemon/daemonVolume.cpp b/netfs/daemon/daemonVolume.cpp index e457098..40082cc 100644 --- a/netfs/daemon/daemonVolume.cpp +++ b/netfs/daemon/daemonVolume.cpp @@ -47,13 +47,13 @@ VolumeServer::access(const NetFS::ReqEnv & re, const std::string & path, Ice::In  		return 0;  	}  	tp.AssertRead(p.parent_path()); -	if (mode & R_OK && !ReadableBy(s, tp.myu, tp.myg)) { +	if (mode & R_OK && !ModeCheck::ReadableBy(s, tp.myu, tp.myg)) {  		return EACCES;  	} -	if (mode & W_OK && !WritableBy(s, tp.myu, tp.myg)) { +	if (mode & W_OK && !ModeCheck::WritableBy(s, tp.myu, tp.myg)) {  		return EACCES;  	} -	if (mode & X_OK && !ExecutableBy(s, tp.myu, tp.myg)) { +	if (mode & X_OK && !ModeCheck::ExecutableBy(s, tp.myu, tp.myg)) {  		return EACCES;  	}  	return 0; diff --git a/netfs/daemon/modeCheck.cpp b/netfs/daemon/modeCheck.cpp index 63ae46a..637abe3 100644 --- a/netfs/daemon/modeCheck.cpp +++ b/netfs/daemon/modeCheck.cpp @@ -5,7 +5,7 @@  #define gs GroupEntCache::instance  bool -ReadableBy(const struct stat & s, uid_t u, gid_t g) +ModeCheck::ReadableBy(const struct stat & s, uid_t u, gid_t g)  {  	if (u == 0) return true;  	if (s.st_mode & S_IROTH) return true; @@ -15,7 +15,7 @@ ReadableBy(const struct stat & s, uid_t u, gid_t g)  }  bool -WritableBy(const struct stat & s, uid_t u, gid_t g) +ModeCheck::WritableBy(const struct stat & s, uid_t u, gid_t g)  {  	if (u == 0) return true;  	if (s.st_mode & S_IWOTH) return true; @@ -25,7 +25,7 @@ WritableBy(const struct stat & s, uid_t u, gid_t g)  }  bool -ExecutableBy(const struct stat & s, uid_t u, gid_t g) +ModeCheck::ExecutableBy(const struct stat & s, uid_t u, gid_t g)  {  	if (u == 0 && (s.st_mode & (S_IXOTH | S_IXGRP | S_IXUSR))) return true;  	if (s.st_mode & S_IXOTH) return true; diff --git a/netfs/daemon/modeCheck.h b/netfs/daemon/modeCheck.h index ed2d60b..b3377bd 100644 --- a/netfs/daemon/modeCheck.h +++ b/netfs/daemon/modeCheck.h @@ -3,9 +3,12 @@  #include <sys/stat.h> -bool ReadableBy(const struct stat &, uid_t u, gid_t g); -bool WritableBy(const struct stat &, uid_t u, gid_t g); -bool ExecutableBy(const struct stat &, uid_t u, gid_t g); +class ModeCheck { +	public: +		static bool ReadableBy(const struct stat &, uid_t u, gid_t g); +		static bool WritableBy(const struct stat &, uid_t u, gid_t g); +		static bool ExecutableBy(const struct stat &, uid_t u, gid_t g); +};  #endif  | 
