mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
cred: fix setres{g,u}id
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user