struct passwd pwbuf;
int old_errno = errno;
- int buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
char *buf = malloc(buflen);
if (buf == NULL) {
*errnop = ENOMEM;
struct passwd pwbuf;
int old_errno = errno;
- int buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
char *buf = malloc(buflen);
if (buf == NULL) {
*errnop = ENOMEM;
if (status != NSS_STATUS_SUCCESS)
return status;
+ if (strcmp(name, pwd->pw_name) != 0) {
+ syslog(LOG_ERR, "nss_nonlocal: discarding user %s from lookup for user %s\n", pwd->pw_name, name);
+ return NSS_STATUS_NOTFOUND;
+ }
+
status = check_nonlocal_uid(name, pwd->pw_uid, errnop);
if (status != NSS_STATUS_SUCCESS)
return status;