diff options
| author | Bill Paul <wpaul@FreeBSD.org> | 1997-11-16 03:02:39 +0000 | 
|---|---|---|
| committer | Bill Paul <wpaul@FreeBSD.org> | 1997-11-16 03:02:39 +0000 | 
| commit | d9cc92f584084e320bc8e1f437fd46843924762f (patch) | |
| tree | 60dcea468964a1e542f2ccca2088f712947cf055 | |
| parent | 40b8c3d00880b882bc21d05af8dedf907bb8c8eb (diff) | |
Notes
| -rw-r--r-- | lib/libc/gen/getnetgrent.c | 25 | 
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/libc/gen/getnetgrent.c b/lib/libc/gen/getnetgrent.c index 605dd500e422..cc04f2f0d7bb 100644 --- a/lib/libc/gen/getnetgrent.c +++ b/lib/libc/gen/getnetgrent.c @@ -276,17 +276,24 @@ endnetgrent()  #ifdef YP  static int _listmatch(list, group, len) -char *list, *group; -int len; +	char *list, *group; +	int len;  { -	char *ptr = list; - -	while ( (ptr = strstr(ptr, group)) ) { - -		ptr += strlen(group); - -		if (*ptr == ',' || *ptr == '\0') +	char *ptr = list, *cptr; +	int glen = strlen(group); + +	/* skip possible leading whitespace */ +	while(isspace(*ptr)) +		ptr++; + +	while (ptr < list + len) { +		cptr = ptr; +		while(*ptr != ','  && !isspace(*ptr)) +			ptr++; +		if (strncmp(cptr, group, glen) == 0 && glen == (ptr - cptr))  			return(1); +		while(*ptr == ','  || isspace(*ptr)) +			ptr++;  	}  	return(0);  | 
