diff options
Diffstat (limited to 'nis/nss_nisplus/nisplus-parser.c')
-rw-r--r-- | nis/nss_nisplus/nisplus-parser.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c index 3d0ff32e57..db5f487159 100644 --- a/nis/nss_nisplus/nisplus-parser.c +++ b/nis/nss_nisplus/nisplus-parser.c @@ -212,20 +212,23 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, room_left -= sizeof (char *); gr->gr_mem[count] = line; - while (*line != '\0' && *line != ',' && !isspace(*line)) + while (*line != '\0' && *line != ',' && !isspace (*line)) ++line; - if (line != gr->gr_mem[count]) + if (*line == ',' || isspace (*line)) { - if (*line != '\0') - { - *line = '\0'; + int is = isspace (*line); + + *line = '\0'; + if (is) + while (*line != '\0' && (*line == ',' || isspace (*line))) ++line; - } + else + ++line; ++count; } else - gr->gr_mem[count] = NULL; + gr->gr_mem[count+1] = NULL; } if (room_left < sizeof (char *)) goto no_more_room; @@ -241,7 +244,7 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp, { char *first_unused = buffer; size_t room_left = buflen; - + if (result == NULL) return 0; |