cred: fix setres{g,u}id

This commit is contained in:
Matheus
2024-08-29 22:48:58 -03:00
parent 066b89c40a
commit 5cc76c5e55
2 changed files with 2 additions and 8 deletions
-6
View File
@@ -4,9 +4,6 @@
#include <kernel/auth.h> #include <kernel/auth.h>
int cred_setuids(cred_t *cred, int uid, int euid, int suid) { 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); int error = auth_cred_check(cred, AUTH_ACTIONS_CRED_SETRESUID, uid, euid, suid);
if (error) if (error)
return 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) { 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); int error = auth_cred_check(cred, AUTH_ACTIONS_CRED_SETRESGID, gid, egid, sgid);
if (error) if (error)
return error; return error;
+2 -2
View File
@@ -171,7 +171,7 @@ static int credlistener(cred_t *cred, int actions, void *arg0, void *arg1, void
} else { } else {
if (*id != -1 && *id != cred->uid && *id != cred->euid && *id != cred->suid) if (*id != -1 && *id != cred->uid && *id != cred->euid && *id != cred->suid)
return AUTH_DECISION_DENY; 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; return AUTH_DECISION_DENY;
if (*sid != -1 && *sid != cred->uid && *sid != cred->euid && *sid != cred->suid) if (*sid != -1 && *sid != cred->uid && *sid != cred->euid && *sid != cred->suid)
return AUTH_DECISION_DENY; return AUTH_DECISION_DENY;
@@ -188,7 +188,7 @@ static int credlistener(cred_t *cred, int actions, void *arg0, void *arg1, void
} else { } else {
if (*id != -1 && *id != cred->gid && *id != cred->egid && *id != cred->sgid) if (*id != -1 && *id != cred->gid && *id != cred->egid && *id != cred->sgid)
return AUTH_DECISION_DENY; 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; return AUTH_DECISION_DENY;
if (*sid != -1 && *sid != cred->gid && *sid != cred->egid && *sid != cred->sgid) if (*sid != -1 && *sid != cred->gid && *sid != cred->egid && *sid != cred->sgid)
return AUTH_DECISION_DENY; return AUTH_DECISION_DENY;