You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by er...@apache.org on 2018/02/08 18:05:47 UTC

celix git commit: Fixed memory leaks reported by coverity

Repository: celix
Updated Branches:
  refs/heads/develop 7b3d1a8e5 -> af26af6b7


Fixed memory leaks reported by coverity


Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/af26af6b
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/af26af6b
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/af26af6b

Branch: refs/heads/develop
Commit: af26af6b71513a1d808b88e617beced679ddad81
Parents: 7b3d1a8
Author: Erjan Altena <er...@gmail.com>
Authored: Thu Feb 8 19:05:30 2018 +0100
Committer: Erjan Altena <er...@gmail.com>
Committed: Thu Feb 8 19:05:30 2018 +0100

----------------------------------------------------------------------
 etcdlib/src/etcd.c                          |  8 +-------
 etcdlib/test/etcdlib_test.c                 |  7 +++++++
 pubsub/pubsub_admin_zmq/src/psa_activator.c | 17 +++++++++--------
 3 files changed, 17 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/celix/blob/af26af6b/etcdlib/src/etcd.c
----------------------------------------------------------------------
diff --git a/etcdlib/src/etcd.c b/etcdlib/src/etcd.c
index 861b07a..0c9d615 100644
--- a/etcdlib/src/etcd.c
+++ b/etcdlib/src/etcd.c
@@ -374,9 +374,6 @@ int etcd_watch(const char* key, long long index, char** action, char** prevValue
     reply.header = NULL; /* will be grown as needed by the realloc above */
     reply.headerSize = 0; /* no data at this point */
 
-    reply.header = malloc(1); /* will be grown as needed by the realloc above */
-    reply.headerSize = 0; /* no data at this point */
-
 	if (index != 0)
 		asprintf(&url, "http://%s:%d/v2/keys/%s?wait=true&recursive=true&waitIndex=%lld", etcd_server, etcd_port, key, index);
 	else
@@ -431,9 +428,7 @@ int etcd_watch(const char* key, long long index, char** action, char** prevValue
 
 	}
 
-	if (reply.memory) {
-		free(reply.memory);
-	}
+	free(reply.memory);
 
 	return retVal;
 }
@@ -475,7 +470,6 @@ int etcd_del(const char* key) {
 	}
 
 	free(reply.memory);
-	free(reply.header);
 
 	return retVal;
 }

http://git-wip-us.apache.org/repos/asf/celix/blob/af26af6b/etcdlib/test/etcdlib_test.c
----------------------------------------------------------------------
diff --git a/etcdlib/test/etcdlib_test.c b/etcdlib/test/etcdlib_test.c
index 7c2d573..afd0e74 100644
--- a/etcdlib/test/etcdlib_test.c
+++ b/etcdlib/test/etcdlib_test.c
@@ -40,6 +40,7 @@ int simplewritetest() {
         printf("etcdlib test error: expected testvalue got %s\n", value);
         res = -1;
     }
+    free(value);
     return res;
 }
 
@@ -53,6 +54,10 @@ void* waitForChange(void*arg) {
     printf("Watching for index %d\n", *idx);
     etcd_watch("hier/ar", *idx, &action, &prevValue, &value, &rkey, &modifiedIndex);
     printf(" New value from watch : [%s]%s => %s\n", rkey, prevValue, value);
+    free (action);
+    free(prevValue);
+    free(rkey);
+    free(value);
     *idx = modifiedIndex+1;
     etcd_watch("hier/ar", *idx, &action, &prevValue, &value, &rkey, &modifiedIndex);
     printf(" New value from watch : [%s]%s => %s\n", rkey, prevValue, value);
@@ -70,6 +75,7 @@ int waitforchangetest() {
 
     int index;
     etcd_get("hier/ar/chi/cal", &value, &index);
+    free(value);
     pthread_t waitThread;
     index++;
     pthread_create(&waitThread, NULL, waitForChange, &index);
@@ -83,6 +89,7 @@ int waitforchangetest() {
         printf("etcdtest::waitforchange1 expected testvalue3, got %s\n", (char*)resVal);
         res = -1;
     }
+    free(resVal);
     return res;
 }
 

http://git-wip-us.apache.org/repos/asf/celix/blob/af26af6b/pubsub/pubsub_admin_zmq/src/psa_activator.c
----------------------------------------------------------------------
diff --git a/pubsub/pubsub_admin_zmq/src/psa_activator.c b/pubsub/pubsub_admin_zmq/src/psa_activator.c
index f754cd1..687e909 100644
--- a/pubsub/pubsub_admin_zmq/src/psa_activator.c
+++ b/pubsub/pubsub_admin_zmq/src/psa_activator.c
@@ -99,7 +99,15 @@ celix_status_t bundleActivator_create(bundle_context_pt context, void **userData
 					&customizer);
 			if(status == CELIX_SUCCESS){
 				status = serviceTracker_create(context, PUBSUB_SERIALIZER_SERVICE, customizer, &(activator->serializerTracker));
-				if(status != CELIX_SUCCESS){
+                if (status == CELIX_SUCCESS) {
+                    properties_pt shellProps = properties_create();
+                    properties_set(shellProps, OSGI_SHELL_COMMAND_NAME, "psa_zmq_info");
+                    properties_set(shellProps, OSGI_SHELL_COMMAND_USAGE, "psa_zmq_info");
+                    properties_set(shellProps, OSGI_SHELL_COMMAND_DESCRIPTION, "psa_zmq_info: Overview of PubSub ZMQ Admin");
+                    activator->admin->shellCmdService.handle = activator;
+                    activator->admin->shellCmdService.executeCommand = shellCommand;
+                    bundleContext_registerService(context, OSGI_SHELL_COMMAND_SERVICE_NAME, &activator->admin->shellCmdService, shellProps, &activator->admin->shellCmdReg);
+                } else {
 					serviceTrackerCustomizer_destroy(customizer);
 					pubsubAdmin_destroy(activator->admin);
 				}
@@ -108,13 +116,6 @@ celix_status_t bundleActivator_create(bundle_context_pt context, void **userData
 				pubsubAdmin_destroy(activator->admin);
 			}
 		}
-		properties_pt shellProps = properties_create();
-		properties_set(shellProps, OSGI_SHELL_COMMAND_NAME, "psa_zmq_info");
-		properties_set(shellProps, OSGI_SHELL_COMMAND_USAGE, "psa_zmq_info");
-		properties_set(shellProps, OSGI_SHELL_COMMAND_DESCRIPTION, "psa_zmq_info: Overview of PubSub ZMQ Admin");
-		activator->admin->shellCmdService.handle = activator;
-		activator->admin->shellCmdService.executeCommand = shellCommand;
-		bundleContext_registerService(context, OSGI_SHELL_COMMAND_SERVICE_NAME, &activator->admin->shellCmdService, shellProps, &activator->admin->shellCmdReg);
 	}
 	return status;
 }