diff options
| author | Olivier Certner <olce.freebsd@certner.fr> | 2023-06-20 19:41:04 +0000 |
|---|---|---|
| committer | Olivier Certner <olce@FreeBSD.org> | 2024-01-29 21:58:06 +0000 |
| commit | c328e6c6ccaa4cdf921c16d68a2f2c5992dd3b72 (patch) | |
| tree | 081e18cebed61cf107691ac3cb67221e3dfe44f5 | |
| parent | 0dd1705f584947625892988afe59e4cedb5cdd09 (diff) | |
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
| -rw-r--r-- | lib/libutil/login_class.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c index c8dd2cd66563..933d9bc4fe1f 100644 --- a/lib/libutil/login_class.c +++ b/lib/libutil/login_class.c @@ -380,6 +380,11 @@ setclasscontext(const char *classname, unsigned int flags) } +static const char * const inherit_enum[] = { + "inherit", + NULL +}; + /* * Private function setting umask from the login class. */ @@ -391,7 +396,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) { |
