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
This commit is contained in:
Olivier Certner 2023-05-30 17:14:50 +02:00 committed by Olivier Certner
parent 33d4ce5496
commit f2a0277d3e
No known key found for this signature in database
GPG Key ID: 8CA13040971E2627

View File

@ -621,6 +621,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);
}