diff options
author | wpaul <wpaul@FreeBSD.org> | 1995-03-24 08:01:01 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 1995-03-24 08:01:01 +0000 |
commit | 5d03aae6f119f7d4e943cc5f2d7c1735c01541d4 (patch) | |
tree | 720e9e629664a08c1a66d2aba5571cbee5332eef /lib | |
parent | 3cb184c016fa00e91c56cabc54de50d7d8b81108 (diff) | |
download | FreeBSD-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.c | 21 |
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); |