summaryrefslogtreecommitdiffstats
path: root/libutil/login_cap.c
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>2001-09-25 11:07:26 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>2001-09-25 11:07:26 +0000
commit67a0ef27644ad3ae9cd0df362ed185d28e53bca5 (patch)
tree6f6190e9e76170f0109c8b3e3d2fae26bee18b2c /libutil/login_cap.c
parent2ee563ae46500971e39c185b190e76c4a06f03ff (diff)
downloadpw-darwin-67a0ef27644ad3ae9cd0df362ed185d28e53bca5.tar.gz
pw-darwin-67a0ef27644ad3ae9cd0df362ed185d28e53bca5.tar.zst
pw-darwin-67a0ef27644ad3ae9cd0df362ed185d28e53bca5.zip
1) Back out ~/.login_conf disable
2) Pick only "me" class from ~/.login_conf as documented
Diffstat (limited to 'libutil/login_cap.c')
-rw-r--r--libutil/login_cap.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/libutil/login_cap.c b/libutil/login_cap.c
index bb4c080..f841961 100644
--- a/libutil/login_cap.c
+++ b/libutil/login_cap.c
@@ -184,18 +184,17 @@ login_getclassbyname(char const *name, const struct passwd *pwd)
login_cap_t *lc;
if ((lc = malloc(sizeof(login_cap_t))) != NULL) {
- int r, i = 0;
+ int r, me, i = 0;
uid_t euid = 0;
gid_t egid = 0;
const char *msg = NULL;
- const char *dir = (pwd == NULL) ? NULL : pwd->pw_dir;
+ const char *dir;
char userpath[MAXPATHLEN];
static char *login_dbarray[] = { NULL, NULL, NULL };
-#ifndef _FILE_LOGIN_CONF_WORKS
- dir = NULL;
-#endif
+ me = (name != NULL && strcmp(name, LOGIN_MECLASS) == 0);
+ dir = (!me || pwd == NULL) ? NULL : pwd->pw_dir;
/*
* Switch to user mode before checking/reading its ~/.login_conf
* - some NFSes have root read access disabled.
@@ -227,7 +226,7 @@ login_getclassbyname(char const *name, const struct passwd *pwd)
switch (cgetent(&lc->lc_cap, login_dbarray, (char*)name)) {
case -1: /* Failed, entry does not exist */
- if (strcmp(name, LOGIN_MECLASS) == 0)
+ if (me)
break; /* Don't retry default on 'me' */
if (i == 0)
r = -1;