again:
status = _nss_getgrent_r(&grp, buf, buflen, &nss_errno);
if (status == NSS_STATUS_TRYAGAIN) {
+ char *oldbuf = buf;
buflen *= 2;
buf = (char *)realloc(buf, buflen);
if (!buf) {
+ SAFE_FREE(oldbuf);
return NULL;
}
goto again;
again:
status = _nss_getgrnam_r(name, &grp, buf, buflen, &nss_errno);
if (status == NSS_STATUS_TRYAGAIN) {
+ char *oldbuf = buf;
buflen *= 2;
buf = (char *)realloc(buf, buflen);
if (!buf) {
+ SAFE_FREE(oldbuf);
return NULL;
}
goto again;
again:
status = _nss_getgrgid_r(gid, &grp, buf, buflen, &nss_errno);
if (status == NSS_STATUS_TRYAGAIN) {
+ char *oldbuf = buf;
buflen *= 2;
buf = (char *)realloc(buf, buflen);
if (!buf) {
+ SAFE_FREE(oldbuf);
return NULL;
}
goto again;