mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:28:12 +00:00
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.
This commit is contained in:
parent
456a8436b5
commit
9ca979846c
6 changed files with 62 additions and 18 deletions
|
@ -30,7 +30,9 @@ ErrorOr<FlatPtr> Process::sys$seteuid(UserID new_euid)
|
|||
credentials->egid(),
|
||||
credentials->suid(),
|
||||
credentials->sgid(),
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->euid() != new_euid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -61,7 +63,9 @@ ErrorOr<FlatPtr> Process::sys$setegid(GroupID new_egid)
|
|||
new_egid,
|
||||
credentials->suid(),
|
||||
credentials->sgid(),
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->egid() != new_egid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -92,7 +96,9 @@ ErrorOr<FlatPtr> Process::sys$setuid(UserID new_uid)
|
|||
credentials->egid(),
|
||||
new_uid,
|
||||
credentials->sgid(),
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->euid() != new_uid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -123,7 +129,9 @@ ErrorOr<FlatPtr> Process::sys$setgid(GroupID new_gid)
|
|||
new_gid,
|
||||
credentials->suid(),
|
||||
new_gid,
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->egid() != new_gid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -160,7 +168,9 @@ ErrorOr<FlatPtr> Process::sys$setreuid(UserID new_ruid, UserID new_euid)
|
|||
credentials->egid(),
|
||||
credentials->suid(),
|
||||
credentials->sgid(),
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->euid() != new_euid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -196,7 +206,9 @@ ErrorOr<FlatPtr> Process::sys$setresuid(UserID new_ruid, UserID new_euid, UserID
|
|||
credentials->egid(),
|
||||
new_suid,
|
||||
credentials->sgid(),
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->euid() != new_euid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -230,7 +242,9 @@ ErrorOr<FlatPtr> Process::sys$setregid(GroupID new_rgid, GroupID new_egid)
|
|||
new_egid,
|
||||
credentials->suid(),
|
||||
credentials->sgid(),
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->egid() != new_egid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -266,7 +280,9 @@ ErrorOr<FlatPtr> Process::sys$setresgid(GroupID new_rgid, GroupID new_egid, Grou
|
|||
new_egid,
|
||||
credentials->suid(),
|
||||
new_sgid,
|
||||
credentials->extra_gids()));
|
||||
credentials->extra_gids(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
|
||||
if (credentials->egid() != new_egid)
|
||||
protected_data.dumpable = false;
|
||||
|
@ -298,7 +314,9 @@ ErrorOr<FlatPtr> Process::sys$setgroups(size_t count, Userspace<GroupID const*>
|
|||
credentials->egid(),
|
||||
credentials->suid(),
|
||||
credentials->sgid(),
|
||||
{}));
|
||||
{},
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -324,7 +342,9 @@ ErrorOr<FlatPtr> Process::sys$setgroups(size_t count, Userspace<GroupID const*>
|
|||
credentials->egid(),
|
||||
credentials->suid(),
|
||||
credentials->sgid(),
|
||||
new_extra_gids.span()));
|
||||
new_extra_gids.span(),
|
||||
credentials->sid(),
|
||||
credentials->pgid()));
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue