mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 20:58:22 +00:00
31 lines
618 B
C
31 lines
618 B
C
#include <kernel/abi.h>
|
|
#include <kernel/syscalls.h>
|
|
#include <kernel/cred.h>
|
|
#include <arch/cpu.h>
|
|
|
|
syscallret_t syscall_getresuid(context_t *, uid_t *uidp, uid_t *euidp, uid_t *suidp) {
|
|
syscallret_t ret = {
|
|
.ret = -1
|
|
};
|
|
|
|
int uid, euid, suid;
|
|
cred_getuids(¤t_thread()->proc->cred, &uid, &euid, &suid);
|
|
|
|
ret.errno = usercopy_touser(uidp, &uid, sizeof(uid));
|
|
if (ret.errno)
|
|
goto leave;
|
|
|
|
ret.errno = usercopy_touser(euidp, &euid, sizeof(euid));
|
|
if (ret.errno)
|
|
goto leave;
|
|
|
|
ret.errno = usercopy_touser(suidp, &suid, sizeof(suid));
|
|
if (ret.errno)
|
|
goto leave;
|
|
|
|
ret.ret = 0;
|
|
|
|
leave:
|
|
return ret;
|
|
}
|