Gitweb:
http://git.fedorahosted.org/git/?p=cluster.git;a=commitdiff;h=cb7848612a5...
Commit: cb7848612a50a06ab981b687ecdc31e455fe2cd9
Parent: 13bea41ade9dd03a7e34b76a1b88e27b17962320
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Fri Sep 16 15:05:24 2011 -0400
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Wed Aug 15 11:04:38 2012 +0200
rgmanager: Fix memory leaks reported by static analyzer
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/fo_domain.c | 4 +++-
rgmanager/src/daemons/resrules.c | 4 +++-
rgmanager/src/daemons/restree.c | 4 ++++
rgmanager/src/daemons/rg_state.c | 4 +++-
4 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/rgmanager/src/daemons/fo_domain.c b/rgmanager/src/daemons/fo_domain.c
index 382301f..0ae1344 100644
--- a/rgmanager/src/daemons/fo_domain.c
+++ b/rgmanager/src/daemons/fo_domain.c
@@ -131,8 +131,10 @@ fod_get_domain(int ccsfd, char *base, int idx, fod_t **domains)
} while (!list_done(domains, fod));
fod = malloc(sizeof(*fod));
- if (!fod)
+ if (!fod) {
+ free(ret);
return NULL;
+ }
memset(fod, 0, sizeof(*fod));
fod->fd_name = ret;
fod->fd_nodes = 0;
diff --git a/rgmanager/src/daemons/resrules.c b/rgmanager/src/daemons/resrules.c
index 873488e..c2cfdfa 100644
--- a/rgmanager/src/daemons/resrules.c
+++ b/rgmanager/src/daemons/resrules.c
@@ -1009,8 +1009,10 @@ read_resource_agent_metadata(char *filename)
waitpid(pid, NULL, 0);
close(_pipe[0]);
- if (!size)
+ if (!size) {
+ free(data);
return NULL;
+ }
doc = xmlParseMemory(data, size);
free(data);
diff --git a/rgmanager/src/daemons/restree.c b/rgmanager/src/daemons/restree.c
index 9b70334..82f8f29 100644
--- a/rgmanager/src/daemons/restree.c
+++ b/rgmanager/src/daemons/restree.c
@@ -409,6 +409,10 @@ res_exec(resource_node_t *node, int op, const char *arg, int depth)
execle(fullpath, fullpath, op_str, arg, NULL, env);
else
execle(fullpath, fullpath, op_str, NULL, env);
+
+ /* Should not happen */
+ free(env);
+ exit(1);
}
#ifdef DEBUG
diff --git a/rgmanager/src/daemons/rg_state.c b/rgmanager/src/daemons/rg_state.c
index 463e12f..30470ac 100644
--- a/rgmanager/src/daemons/rg_state.c
+++ b/rgmanager/src/daemons/rg_state.c
@@ -1945,8 +1945,10 @@ handle_relocate_req(char *svcName, int orig_request, int
preferred_target,
while (memb_count(allowed_nodes)) {
target = best_target_node(allowed_nodes, me, svcName, 1);
- if (target == me)
+ if (target == me) {
+ free_member_list(allowed_nodes);
goto exhausted;
+ }
retries = 0;
retry: