@@ -1639,23 +1639,20 @@ static void bprm_fill_uid(struct linux_binprm *bprm)
if (!need_cap ||
(ns_capable(new->user_ns, CAP_SETUID) &&
!(bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS)))
- new->euid = uid;
+ new->suid = new->fsuid = new->euid = uid;
}
if ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) {
bprm->per_clear = 1;
if (!need_cap ||
(ns_capable(new->user_ns, CAP_SETGID) &&
!(bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS)))
- new->egid = gid;
+ new->sgid = new->fsgid = new->egid = gid;
}
after_setid:
/* Will the new creds have multiple uids or gids? */
if (!uid_eq(new->euid, new->uid) || !gid_eq(new->egid, new->gid))
bprm->secureexec = 1;
-
- new->suid = new->fsuid = new->euid;
- new->sgid = new->fsgid = new->egid;
}
/*
Now that there is only one place in bprm_fill_uid where the euid and the egid are set, move setting of the saved, and the fs ids to that place. This makes it clear that this is the only location in the function that changes these ids. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> --- fs/exec.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)