diff options
author | Nils Goroll <nils.goroll@hamburg.de> | 2008-09-03 09:37:42 +0200 |
---|---|---|
committer | Nils Goroll <nils.goroll@hamburg.de> | 2008-09-03 09:37:42 +0200 |
commit | 95dd938966e7f45c67d0003e88ead5f5f2ddaecb (patch) | |
tree | 242025ae1360c296a6ba3dbc6e1990369a927cd9 /usr/src/lib/pam_modules | |
parent | 70cbfe41f2338b77c15f79c6625eca6e70c412f3 (diff) | |
download | illumos-joyent-95dd938966e7f45c67d0003e88ead5f5f2ddaecb.tar.gz |
6742084 PRIV_FILE_CHOWN_SELF granted in pam_sm_setcred even if pathconf returns EINVAL
Diffstat (limited to 'usr/src/lib/pam_modules')
-rw-r--r-- | usr/src/lib/pam_modules/unix_cred/unix_cred.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/usr/src/lib/pam_modules/unix_cred/unix_cred.c b/usr/src/lib/pam_modules/unix_cred/unix_cred.c index 7febf879c0..305cbade9d 100644 --- a/usr/src/lib/pam_modules/unix_cred/unix_cred.c +++ b/usr/src/lib/pam_modules/unix_cred/unix_cred.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <nss_dbdefs.h> #include <pwd.h> #include <stdlib.h> @@ -543,7 +541,8 @@ adt_done: if (def == NULL) { def = priv_str_to_set("basic", ",", NULL); - if (pathconf("/", _PC_CHOWN_RESTRICTED) == -1) + errno = 0; + if ((pathconf("/", _PC_CHOWN_RESTRICTED) == -1) && (errno == 0)) (void) priv_addset(def, PRIV_FILE_CHOWN_SELF); } /* @@ -568,7 +567,7 @@ adt_done: (void) setpflags(PRIV_AWARE, 1); if (setppriv(PRIV_SET, PRIV_INHERITABLE, def) != 0) { syslog(LOG_AUTH | LOG_ERR, - "pam_setcred: setppriv(defaultpriv) failed: %m"); + "pam_setcred: setppriv(defaultpriv) failed: %m"); ret = PAM_CRED_ERR; } @@ -590,7 +589,7 @@ adt_done: if (setppriv(PRIV_SET, PRIV_LIMIT, lim) != 0 || setppriv(PRIV_SET, PRIV_PERMITTED, lim) != 0) { syslog(LOG_AUTH | LOG_ERR, - "pam_setcred: setppriv(limitpriv) failed: %m"); + "pam_setcred: setppriv(limitpriv) failed: %m"); ret = PAM_CRED_ERR; } } |