diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c --- a/lib/libutil/login_class.c +++ b/lib/libutil/login_class.c @@ -383,18 +383,29 @@ } +static const char * const inherit_enum[] = { + "inherit", + NULL +}; + /* * Private function setting umask from the login class. */ static void setclassumask(login_cap_t *lc, const struct passwd *pwd) { + const int ret = login_getcapenum(lc, "umask", inherit_enum); /* * Make it unlikely that someone would input our default sentinel * 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 (ret == 0) + return; + + val = login_getcapnum(lc, "umask", def_val, err_val); if (val != def_val) { if (val < 0 || val > UINT16_MAX)