From 5cc76c5e555c0f4f3d705d47e5f47e666e7b7b2e Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 29 Aug 2024 22:48:58 -0300 Subject: [PATCH] cred: fix setres{g,u}id --- kernel-src/sys/cred.c | 6 ------ kernel-src/sys/defaultauth.c | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/kernel-src/sys/cred.c b/kernel-src/sys/cred.c index 9ad031d1..18c9cc90 100644 --- a/kernel-src/sys/cred.c +++ b/kernel-src/sys/cred.c @@ -4,9 +4,6 @@ #include int cred_setuids(cred_t *cred, int uid, int euid, int suid) { - if (uid < -1 || euid < -1 || suid < -1 || (uid == -1 && euid == -1 && suid == -1)) - return EINVAL; - int error = auth_cred_check(cred, AUTH_ACTIONS_CRED_SETRESUID, uid, euid, suid); if (error) return error; @@ -19,9 +16,6 @@ int cred_setuids(cred_t *cred, int uid, int euid, int suid) { } int cred_setgids(cred_t *cred, int gid, int egid, int sgid) { - if (gid < -1 || egid < -1 || sgid < -1 || (gid == -1 && egid == -1 && sgid == -1)) - return EINVAL; - int error = auth_cred_check(cred, AUTH_ACTIONS_CRED_SETRESGID, gid, egid, sgid); if (error) return error; diff --git a/kernel-src/sys/defaultauth.c b/kernel-src/sys/defaultauth.c index a737e426..6d0c5ddd 100644 --- a/kernel-src/sys/defaultauth.c +++ b/kernel-src/sys/defaultauth.c @@ -171,7 +171,7 @@ static int credlistener(cred_t *cred, int actions, void *arg0, void *arg1, void } else { if (*id != -1 && *id != cred->uid && *id != cred->euid && *id != cred->suid) return AUTH_DECISION_DENY; - if (*eid != -1 && *id != cred->uid && *id != cred->euid && *id != cred->suid) + if (*eid != -1 && *eid != cred->uid && *eid != cred->euid && *eid != cred->suid) return AUTH_DECISION_DENY; if (*sid != -1 && *sid != cred->uid && *sid != cred->euid && *sid != cred->suid) return AUTH_DECISION_DENY; @@ -188,7 +188,7 @@ static int credlistener(cred_t *cred, int actions, void *arg0, void *arg1, void } else { if (*id != -1 && *id != cred->gid && *id != cred->egid && *id != cred->sgid) return AUTH_DECISION_DENY; - if (*eid != -1 && *id != cred->gid && *id != cred->egid && *id != cred->sgid) + if (*eid != -1 && *eid != cred->gid && *eid != cred->egid && *eid != cred->sgid) return AUTH_DECISION_DENY; if (*sid != -1 && *sid != cred->gid && *sid != cred->egid && *sid != cred->sgid) return AUTH_DECISION_DENY;