size_t buflen = sysconf(_SC_GETGR_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;
gid = strtoul(grp->gr_name, &end, 10);
- if (errno == 0 && *end == '\0' && (gid_t)gid == gid)
+ if (errno == 0 && *end == '\0' && (gid_t)gid == gid) {
+ errno = old_errno;
status = check_nonlocal_gid(user, gid, errnop);
- errno = old_errno;
+ } else
+ errno = old_errno;
if (status != NSS_STATUS_SUCCESS)
return status;
buflen = sysconf(_SC_GETGR_R_SIZE_MAX);
*buffer = malloc(buflen);
+ errno = old_errno;
if (*buffer == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
free(*buffer);
buflen *= 2;
*buffer = malloc(buflen);
+ errno = old_errno;
if (*buffer == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
goto morebuf;
newsize = limit;
}
newgroups = realloc(*groupsp, newsize * sizeof((*groupsp)[0]));
+ errno = old_errno;
if (newgroups == NULL) {
*errnop = ENOMEM;
- errno = old_errno;
return NSS_STATUS_TRYAGAIN;
}
*groupsp = newgroups;