1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 17:27:35 +00:00

Kernel: Start adding various file system permission checks.

Fail with EACCES in various situations. Fix userland bugs that were exposed.
This commit is contained in:
Andreas Kling 2019-02-21 15:45:31 +01:00
parent 43075e5878
commit f5f136931a
7 changed files with 96 additions and 8 deletions

View file

@ -115,6 +115,7 @@ public:
State state() const { return m_state; }
uid_t uid() const { return m_uid; }
gid_t gid() const { return m_gid; }
const HashTable<gid_t>& gids() const { return m_gids; }
uid_t euid() const { return m_euid; }
gid_t egid() const { return m_egid; }
pid_t ppid() const { return m_ppid; }
@ -537,3 +538,18 @@ inline void Process::for_each_living(Callback callback)
process = next_process;
}
}
inline bool InodeMetadata::may_read(Process& process) const
{
return may_read(process.euid(), process.gids());
}
inline bool InodeMetadata::may_write(Process& process) const
{
return may_write(process.euid(), process.gids());
}
inline bool InodeMetadata::may_execute(Process& process) const
{
return may_execute(process.euid(), process.gids());
}