Fix handling of realloc. If realloc() fails it returns NULL, assigning
the return value of realloc() directly to the pointer without checking
for the result will lead to a memory leak.
Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
if (getgrouplist(pw->pw_name, gid, sgids, &sgid_count) == -1) {
#endif
// we need to resize the group list and try again
- sgids = (gid_t*)realloc(sgids, sgid_count * sizeof(gid_t));
- if (sgids == NULL) {
+ void *_realloc = NULL;
+ if ((_realloc = realloc(sgids, sgid_count * sizeof(gid_t))) == NULL) {
ldout(cct, 3) << "allocating group memory failed" << dendl;
+ free(sgids);
return -EACCES;
}
+ sgids = (gid_t*)_realloc;
continue;
}
// list was successfully retrieved