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;
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);
}
gid_t local_users_gid, gid;
int is_local = 0;
char *buffer;
+ int old_errno;
+ int in, out, i;
/* Check that the user is a nonlocal user before adding any groups. */
status = check_nonlocal_user(user, errnop);
else if (status != NSS_STATUS_SUCCESS)
is_local = 1;
- int old_errno = errno;
+ old_errno = errno;
status = get_local_group(MAGIC_LOCAL_GROUPNAME,
&local_users_group, &buffer, errnop);
if (is_local)
return NSS_STATUS_SUCCESS;
- int in = *start, out = *start, i;
+ in = out = *start;
nip = nss_group_nonlocal_database();
if (nip == NULL)