git: d162d7e2ad32 - main - setclasspriority(): New possible value 'inherit'

From: Olivier Certner <olce_at_FreeBSD.org>
Date: Mon, 29 Jan 2024 22:32:17 UTC
The branch main has been updated by olce:

URL: https://cgit.FreeBSD.org/src/commit/?id=d162d7e2ad327ceada4102c5d6779f9ecd809502

commit d162d7e2ad327ceada4102c5d6779f9ecd809502
Author:     Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2023-06-21 08:53:37 +0000
Commit:     Olivier Certner <olce@FreeBSD.org>
CommitDate: 2024-01-29 21:58:09 +0000

    setclasspriority(): New possible value 'inherit'
    
    It indicates to the login.conf machinery (setusercontext() /
    setclasscontext()) to leave priority alone, effectively inheriting it
    from the parent process.
    
    PR:                     271749
    Reviewed by:            emaste, yuripv
    Approved by:            emaste (mentor)
    MFC after:              3 days
    Relnotes:               yes
    Sponsored by:           Kumacom SAS
    Differential Revision:  https://reviews.freebsd.org/D40690
---
 lib/libutil/login_class.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c
index d36926d70224..314ab0999320 100644
--- a/lib/libutil/login_class.c
+++ b/lib/libutil/login_class.c
@@ -462,9 +462,15 @@ static void
 setclasspriority(login_cap_t * const lc, struct passwd const * const pwd)
 {
 	const rlim_t def_val = LOGIN_DEFPRI, err_val = INT64_MIN;
-	rlim_t p = login_getcapnum(lc, "priority", def_val, err_val);
+	rlim_t p;
 	int rc;
 
+	/* If value is "inherit", nothing to change. */
+	if (login_getcapenum(lc, "priority", inherit_enum) == 0)
+		return;
+
+	p = login_getcapnum(lc, "priority", def_val, err_val);
+
 	if (p == err_val) {
 		/* Invariant: 'lc' != NULL. */
 		syslog(LOG_WARNING,