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>
Signed-off-by: Yan, Zheng <zyan@redhat.com>
(cherry picked from commit
4f98dab99c35663de89a06e2dfdbd874f56aed41)
while (1) {
if (getgrouplist(pw->pw_name, gid, sgids, &sgid_count) == -1) {
// 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