[Cluster-devel] [PATCH 09/19] config: fix possible memory leak in libccs fullxpath usage

Fabio M. Di Nitto fdinitto at redhat.com
Tue Oct 25 12:09:00 UTC 2011


Spotted by Coverity Scan

Signed-off-by: Fabio M. Di Nitto <fdinitto at redhat.com>
---
:100644 100644 6b2e138... 8c4501f... M	config/libs/libccsconfdb/fullxpath.c
 config/libs/libccsconfdb/fullxpath.c |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/config/libs/libccsconfdb/fullxpath.c b/config/libs/libccsconfdb/fullxpath.c
index 6b2e138..8c4501f 100644
--- a/config/libs/libccsconfdb/fullxpath.c
+++ b/config/libs/libccsconfdb/fullxpath.c
@@ -174,10 +174,10 @@ static int dump_objdb_buff(confdb_handle_t dump_handle, hdb_handle_t cluster_han
 int xpathfull_init(confdb_handle_t handle)
 {
 	int size = XMLBUFSIZE;
-	char *buffer, *newbuf;
+	char *buffer;
 	hdb_handle_t cluster_handle;
 
-	newbuf = buffer = malloc(XMLBUFSIZE);
+	buffer = malloc(XMLBUFSIZE);
 	if (!buffer) {
 		errno = ENOMEM;
 		goto fail;
@@ -191,14 +191,9 @@ int xpathfull_init(confdb_handle_t handle)
 	if (confdb_object_find(handle, OBJECT_PARENT_HANDLE, "cluster", strlen("cluster"), &cluster_handle) != CS_OK)
 		goto fail;
 
-	if (dump_objdb_buff(handle, cluster_handle, cluster_handle, &newbuf, &size))
+	if (dump_objdb_buff(handle, cluster_handle, cluster_handle, &buffer, &size))
 		goto fail;
 
-	if (newbuf != buffer) {
-		buffer = newbuf;
-		newbuf = NULL;
-	}
-
 	doc = xmlParseMemory(buffer, strlen(buffer));
 	if (!doc)
 		goto fail;
@@ -214,6 +209,9 @@ int xpathfull_init(confdb_handle_t handle)
 	return 0;
 
 fail:
+	if (buffer)
+		free(buffer);
+
 	return -1;
 }
 
-- 
1.7.4.4




More information about the Cluster-devel mailing list