diff options
| author | Bill Paul <wpaul@FreeBSD.org> | 1995-03-18 05:03:10 +0000 | 
|---|---|---|
| committer | Bill Paul <wpaul@FreeBSD.org> | 1995-03-18 05:03:10 +0000 | 
| commit | 89047c9c7ce80d605223d0e2a98247259b7c951d (patch) | |
| tree | 5d2d683c668960039fd58d8655206e7d2dae541a /lib/libc | |
| parent | e831146aee708de7b6618460ad82f1bd3882fa9a (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/gen/getgrent.c | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/lib/libc/gen/getgrent.c b/lib/libc/gen/getgrent.c index 286796bad10e..dfcabb0f34db 100644 --- a/lib/libc/gen/getgrent.c +++ b/lib/libc/gen/getgrent.c @@ -93,7 +93,8 @@ getgrnam(name)  		return(NULL);  	rval = grscan(1, 0, name);  #ifdef YP -	if(!rval && _gr_yp_enabled < 0) { +	if(!rval && (_gr_yp_enabled < 0 || (_gr_yp_enabled && +					_gr_group.gr_name[0] == '+'))) {  		rval = _getypgroup(&_gr_group, name, "group.byname");  	}  #endif @@ -229,6 +230,15 @@ grscan(search, gid, name)  				continue;  			}  		} +#ifdef YP +		/* +		 * XXX   We need to be careful to avoid proceeding +		 * past this point under certain circumstances or +		 * we risk dereferencing null pointers down below. +		 */ +		if (!search && _gr_group.gr_name[0] == '+') +			return(1); +#endif /* YP */  		_gr_group.gr_passwd = strsep(&bp, ":\n");  		if (!(cp = strsep(&bp, ":\n")))  			continue; | 
