setusercontext(): Set priority from '~/.login_conf' as well

Setting the process priority is done only when the current process'
effective UID corresponds to that for which context is to be set.
Consequently, setting priority is done with appropriate credentials and
will fail if the target user tries to raise it unduly via his
'~/.login_conf'.

PR:                     271751
Reviewed by:            kib, Andrew Gierth <andrew_tao173.riddles.org.uk>
Approved by:            emaste (mentor)
MFC after:              3 days
Relnotes:               yes
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40352

(cherry picked from commit f2a0277d3e51a6a839151eef17f466d0db2b7300)

Approved by:            markj (mentor)
This commit is contained in:
Olivier Certner 2023-05-30 17:14:50 +02:00 committed by Olivier Certner
parent a2fe14d73f
commit d2d66fedc4
No known key found for this signature in database
GPG key ID: 8CA13040971E2627

View file

@ -622,6 +622,8 @@ setusercontext(login_cap_t *lc, const struct passwd *pwd, uid_t uid, unsigned in
*/
if (geteuid() == uid && (lc = login_getuserclass(pwd)) != NULL) {
setlogincontext(lc, pwd, flags);
if (flags & LOGIN_SETPRIORITY)
setclasspriority(lc, pwd);
login_close(lc);
}