The code is checking if the group in the list is a number or a name of the group, but in the case it's number it is not inserted into the result list. I've also added a , as a possible list separator. Bellow is the patch: --- /usr/src/redhat/SOURCES/glibc-2.1.94/hesiod/nss_hesiod/hesiod-grp.c Mon Jul 24 16:23:29 2000 +++ hesiod-grp.c Wed Oct 18 03:43:22 2000 @@ -224,7 +224,7 @@ status = NSS_STATUS_NOTFOUND; q = p; - while (*q != '\0' && *q != ':') + while (*q != '\0' && *q != ':' && *q != ',') ++q; if (*q != '\0') @@ -233,8 +233,11 @@ val = strtol (p, &endp, 10); if (sizeof (gid_t) == sizeof (long int) || (gid_t) val == val) { - if (*endp == '\0' && endp != p) - status = NSS_STATUS_SUCCESS; + if (*endp == '\0' && endp != p) + { + status = NSS_STATUS_SUCCESS; + group = val; + } else status = internal_gid_from_group (context, p, &group);
Ulrich Drepper will be looking into this.
Thanks, the patch is in glibc and will appear in the next glibc errata.