size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
char *buf = malloc(buflen);
+ errno = old_errno;
if (buf == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
free(buf);
buflen *= 2;
buf = malloc(buflen);
+ errno = old_errno;
if (buf == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
goto morebuf;
errno = 0;
uid = strtoul(pwd->pw_name, &end, 10);
- if (errno == 0 && *end == '\0' && (uid_t)uid == uid)
+ if (errno == 0 && *end == '\0' && (uid_t)uid == uid) {
+ errno = old_errno;
status = check_nonlocal_uid(user, uid, errnop);
- errno = old_errno;
+ } else {
+ errno = old_errno;
+ }
if (status != NSS_STATUS_SUCCESS)
return status;
size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
char *buf = malloc(buflen);
+ errno = old_errno;
if (buf == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
free(buf);
buflen *= 2;
buf = malloc(buflen);
+ errno = old_errno;
if (buf == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
goto morebuf;