aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Certner <olce.freebsd@certner.fr>2023-06-20 19:41:04 +0000
committerOlivier Certner <olce@FreeBSD.org>2024-02-01 21:23:11 +0000
commit16e02df98ad64753fed6ab73c1d1c2aa857b6394 (patch)
tree00c7ade308cc76dcd0eb5a0260dfa0ad3291c9f0
parentffd3cd7c6d861b3a4a4a91f5301ba37e0ac20f67 (diff)
downloadsrc-16e02df98ad6.tar.gz
src-16e02df98ad6.zip
setclassumask(): Accept 'inherit' as a value
'inherit' explicitly indicates that the umask should not be changed. Reviewed by: emaste Approved by: emaste (mentor) MFC after: 3 days Relnotes: yes Sponsored by: Kumacom SAS Differential Revision: https://reviews.freebsd.org/D40687 (cherry picked from commit c328e6c6ccaa4cdf921c16d68a2f2c5992dd3b72) Approved by: markj (mentor)
-rw-r--r--lib/libutil/login_class.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c
index 69230db32961..e6485afade43 100644
--- a/lib/libutil/login_class.c
+++ b/lib/libutil/login_class.c
@@ -381,6 +381,11 @@ setclasscontext(const char *classname, unsigned int flags)
}
+static const char * const inherit_enum[] = {
+ "inherit",
+ NULL
+};
+
/*
* Private function setting umask from the login class.
*/
@@ -392,7 +397,13 @@ setclassumask(login_cap_t *lc, const struct passwd *pwd)
* indicating no specification.
*/
const rlim_t def_val = INT64_MIN + 1, err_val = INT64_MIN;
- const rlim_t val = login_getcapnum(lc, "umask", def_val, err_val);
+ rlim_t val;
+
+ /* If value is "inherit", nothing to change. */
+ if (login_getcapenum(lc, "umask", inherit_enum) == 0)
+ return;
+
+ val = login_getcapnum(lc, "umask", def_val, err_val);
if (val != def_val) {
if (val < 0 || val > UINT16_MAX) {