Hi Zoran, Ack from me, code reviewed only.
BR, Tai Dinh DEK Technologies Vietnam 121/137 Le Loi Street, Ben Thanh Ward, District 1, HCM City, Vietnam Mobile: +84 9 33 37 82 90 -----Original Message----- From: Zoran Milinkovic [mailto:[email protected]] Sent: Wednesday, August 26, 2015 10:22 PM To: [email protected] Cc: [email protected] Subject: [PATCH 1 of 1] osaf: fix memory leak in daemonize [#1461] osaf/libs/core/common/osaf_secutil.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) The patch fixes a memory leak adding endgrent() in missed places in osaf_get_group_list(). diff --git a/osaf/libs/core/common/osaf_secutil.c b/osaf/libs/core/common/osaf_secutil.c --- a/osaf/libs/core/common/osaf_secutil.c +++ b/osaf/libs/core/common/osaf_secutil.c @@ -327,7 +327,7 @@ done: int osaf_get_group_list(const uid_t uid, const gid_t gid, gid_t *groups, int *ngroups) { - int rc = 0; + int rc = -1; // Initially set to error int size = 0; int max_groups = sysconf(_SC_NGROUPS_MAX); if (max_groups == -1){ @@ -370,7 +370,7 @@ int osaf_get_group_list(const uid_t uid, struct group *gr = getgrent(); if (errno != 0) { LOG_NO("setgrent failed: %s", strerror(errno)); - return -1; + goto done; } while (gr){ @@ -379,7 +379,7 @@ int osaf_get_group_list(const uid_t uid, gr = getgrent(); if (errno != 0) { LOG_NO("setgrent failed: %s", strerror(errno)); - return -1; + goto done; } continue; } @@ -399,12 +399,11 @@ int osaf_get_group_list(const uid_t uid, gr = getgrent(); if (errno != 0) { LOG_NO("setgrent failed: %s", strerror(errno)); - return -1; + goto done; } } - endgrent(); - + // rc will be set to non-error value if (groups){ *ngroups = (size < *ngroups)? size : *ngroups; rc = size; @@ -413,5 +412,8 @@ int osaf_get_group_list(const uid_t uid, rc = 0; } +done: + endgrent(); + return rc; } ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
