summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>1995-03-24 08:01:01 +0000
committerwpaul <wpaul@FreeBSD.org>1995-03-24 08:01:01 +0000
commit5d03aae6f119f7d4e943cc5f2d7c1735c01541d4 (patch)
tree720e9e629664a08c1a66d2aba5571cbee5332eef /lib
parent3cb184c016fa00e91c56cabc54de50d7d8b81108 (diff)
downloadFreeBSD-src-5d03aae6f119f7d4e943cc5f2d7c1735c01541d4.zip
FreeBSD-src-5d03aae6f119f7d4e943cc5f2d7c1735c01541d4.tar.gz
Yikes! Fix stupid mistake I made in last commit that made getpwent() ignore
local password entries when YP was enabled. (How the heck did that get by me!?)
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/gen/getpwent.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/lib/libc/gen/getpwent.c b/lib/libc/gen/getpwent.c
index af93478..7f5d1b2 100644
--- a/lib/libc/gen/getpwent.c
+++ b/lib/libc/gen/getpwent.c
@@ -100,17 +100,13 @@ tryagain:
rv = __hashpw(&key);
if(!rv) return (struct passwd *)NULL;
#ifdef YP
- if (_yp_enabled) {
- if(_pw_passwd.pw_name[0] == '+' || _pw_passwd.pw_name[0] == '-')
- goto tryagain;
- else {
- _pw_copy = _pw_passwd;
- return (_nextyppass(&_pw_passwd) ? &_pw_passwd : 0);
- }
+ if(_pw_passwd.pw_name[0] == '+' || _pw_passwd.pw_name[0] == '-') {
+ _pw_copy = _pw_passwd;
+ return (_nextyppass(&_pw_passwd) ? &_pw_passwd : 0);
}
#else
/* Ignore YP password file entries when YP is disabled. */
- if(_pw_passwd.pw_name[0] == '+') {
+ if(_pw_passwd.pw_name[0] == '+' || _pw_passwd.pw_name[0] == '-') {
goto tryagain;
}
#endif
@@ -143,7 +139,8 @@ getpwnam(name)
* Prevent login attempts when YP is not enabled but YP entries
* are in /etc/master.passwd.
*/
- if (rval && _pw_passwd.pw_name[0] == '+') rval = 0;
+ if (rval && (_pw_passwd.pw_name[0] == '+'||
+ _pw_passwd.pw_name[0] == '-')) rval = 0;
endpwent();
return(rval ? &_pw_passwd : (struct passwd *)NULL);
@@ -178,6 +175,12 @@ getpwuid(uid)
rval = _getyppass(&_pw_passwd, ypbuf, "passwd.byuid");
}
#endif
+ /*
+ * Prevent login attempts when YP is not enabled but YP entries
+ * are in /etc/master.passwd.
+ */
+ if (rval && (_pw_passwd.pw_name[0] == '+'||
+ _pw_passwd.pw_name[0] == '-')) rval = 0;
endpwent();
return(rval ? &_pw_passwd : (struct passwd *)NULL);
OpenPOWER on IntegriCloud