summaryrefslogtreecommitdiff
path: root/Kernel/Credentials.h
diff options
context:
space:
mode:
authoryyny <6576327+yyny@users.noreply.github.com>2022-12-19 21:21:51 +0100
committerAndreas Kling <kling@serenityos.org>2023-01-03 18:13:11 +0100
commit9ca979846ca45871a2b97876d2bdb7cd623f1eb1 (patch)
tree5da0ba4aea4f37030030f96e8a6228606213f995 /Kernel/Credentials.h
parent456a8436b5732f5d01e0a298c53710c0e6b46e16 (diff)
downloadserenity-9ca979846ca45871a2b97876d2bdb7cd623f1eb1.zip
Kernel: Add `sid` and `pgid` to `Credentials`
There are places in the kernel that would like to have access to `pgid` credentials in certain circumstances. I haven't found any use cases for `sid` yet, but `sid` and `pgid` are both changed with `sys$setpgid`, so it seemed sensical to add it. In Linux, `man 7 credentials` also mentions both the session id and process group id, so this isn't unprecedented.
Diffstat (limited to 'Kernel/Credentials.h')
-rw-r--r--Kernel/Credentials.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/Kernel/Credentials.h b/Kernel/Credentials.h
index e951d57c21..25e002a25e 100644
--- a/Kernel/Credentials.h
+++ b/Kernel/Credentials.h
@@ -14,7 +14,7 @@ namespace Kernel {
class Credentials final : public AtomicRefCounted<Credentials> {
public:
- static ErrorOr<NonnullRefPtr<Credentials>> create(UserID uid, GroupID gid, UserID euid, GroupID egid, UserID suid, GroupID sgid, Span<GroupID const> extra_gids);
+ static ErrorOr<NonnullRefPtr<Credentials>> create(UserID uid, GroupID gid, UserID euid, GroupID egid, UserID suid, GroupID sgid, Span<GroupID const> extra_gids, SessionID sid, ProcessGroupID pgid);
~Credentials();
bool is_superuser() const { return euid() == 0; }
@@ -26,11 +26,13 @@ public:
UserID suid() const { return m_suid; }
GroupID sgid() const { return m_sgid; }
Span<GroupID const> extra_gids() const { return m_extra_gids.span(); }
+ SessionID sid() const { return m_sid; };
+ ProcessGroupID pgid() const { return m_pgid; }
bool in_group(GroupID) const;
private:
- Credentials(UserID uid, GroupID gid, UserID euid, GroupID egid, UserID suid, GroupID sgid, FixedArray<GroupID> extra_gids);
+ Credentials(UserID uid, GroupID gid, UserID euid, GroupID egid, UserID suid, GroupID sgid, FixedArray<GroupID> extra_gids, SessionID sid, ProcessGroupID pgid);
UserID m_uid;
GroupID m_gid;
@@ -39,6 +41,8 @@ private:
UserID m_suid;
GroupID m_sgid;
FixedArray<GroupID> m_extra_gids;
+ SessionID m_sid;
+ ProcessGroupID m_pgid;
};
}