aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/gen/getnetgrent.c25
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);