X-Git-Url: http://andersk.mit.edu/gitweb/nss_nonlocal.git/blobdiff_plain/d7bf1d1107cc32708a01f9b9dc1fbfa6874f0d95..22562df07d1d1e7bb6a8adba067d8945f293c841:/nonlocal-group.c diff --git a/nonlocal-group.c b/nonlocal-group.c index e21ac84..83e5d12 100644 --- a/nonlocal-group.c +++ b/nonlocal-group.c @@ -81,7 +81,7 @@ check_nonlocal_gid(const char *user, gid_t gid, int *errnop) struct group gbuf; int old_errno = errno; - int buflen = sysconf(_SC_GETGR_R_SIZE_MAX); + size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); char *buf = malloc(buflen); if (buf == NULL) { *errnop = ENOMEM; @@ -329,6 +329,11 @@ _nss_nonlocal_getgrnam_r(const char *name, struct group *grp, if (status != NSS_STATUS_SUCCESS) return status; + if (strcmp(name, grp->gr_name) != 0) { + syslog(LOG_ERR, "nss_nonlocal: discarding group %s from lookup for group %s\n", grp->gr_name, name); + return NSS_STATUS_NOTFOUND; + } + return check_nonlocal_gid(name, grp->gr_gid, errnop); }