Kernel: Add SYS_GET_{,E}{UID,GID}

This commit is contained in:
Bananymous
2023-06-11 22:27:53 +03:00
parent 3fe67e4882
commit 11b68f6a53
4 changed files with 81 additions and 0 deletions

View File

@@ -32,6 +32,10 @@ __BEGIN_DECLS
#define SYS_SET_EGID 25
#define SYS_SET_REUID 26
#define SYS_SET_REGID 27
#define SYS_GET_UID 28
#define SYS_GET_GID 29
#define SYS_GET_EUID 30
#define SYS_GET_EGID 31
__END_DECLS

View File

@@ -213,6 +213,26 @@ long syscall(long syscall, ...)
ret = Kernel::syscall(SYS_SET_REGID, rgid, egid);
break;
}
case SYS_GET_UID:
{
ret = Kernel::syscall(SYS_GET_UID);
break;
}
case SYS_GET_GID:
{
ret = Kernel::syscall(SYS_GET_GID);
break;
}
case SYS_GET_EUID:
{
ret = Kernel::syscall(SYS_GET_EUID);
break;
}
case SYS_GET_EGID:
{
ret = Kernel::syscall(SYS_GET_EGID);
break;
}
default:
puts("LibC: Unhandeled syscall");
ret = -ENOSYS;
@@ -322,6 +342,26 @@ unsigned int sleep(unsigned int seconds)
return syscall(SYS_SLEEP, seconds);
}
uid_t getuid(void)
{
return syscall(SYS_GET_UID);
}
gid_t getgid(void)
{
return syscall(SYS_GET_GID);
}
uid_t geteuid(void)
{
return syscall(SYS_GET_EUID);
}
gid_t getegid(void)
{
return syscall(SYS_GET_EGID);
}
int seteuid(uid_t uid)
{
return syscall(SYS_SET_EUID, uid);