aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ctl-lib/ctl-action.c2
-rw-r--r--ctl-lib/ctl-config.c15
-rw-r--r--ctl-lib/ctl-lua.c2
-rw-r--r--ctl-lib/ctl-plugin.c3
4 files changed, 14 insertions, 8 deletions
diff --git a/ctl-lib/ctl-action.c b/ctl-lib/ctl-action.c
index 8df69d0..fc25d5b 100644
--- a/ctl-lib/ctl-action.c
+++ b/ctl-lib/ctl-action.c
@@ -54,7 +54,7 @@ PUBLIC void ActionExecUID(AFB_ReqT request, CtlConfigT *ctlConfig, const char *u
}
PUBLIC void ActionExecOne(CtlSourceT *source, CtlActionT* action, json_object *queryJ) {
- int err;
+ int err = 0;
switch (action->type) {
case CTL_TYPE_API:
diff --git a/ctl-lib/ctl-config.c b/ctl-lib/ctl-config.c
index 5325138..1e3de7b 100644
--- a/ctl-lib/ctl-config.c
+++ b/ctl-lib/ctl-config.c
@@ -56,6 +56,7 @@ PUBLIC json_object* CtlConfigScan(const char *dirList, const char *prefix) {
char* ConfigSearch(AFB_ApiT apiHandle, json_object *responseJ) {
// We load 1st file others are just warnings
+ char filepath[CONTROL_MAXPATH_LEN];
for (int index = 0; index < json_object_array_length(responseJ); index++) {
json_object *entryJ = json_object_array_get_idx(responseJ, index);
@@ -64,20 +65,17 @@ char* ConfigSearch(AFB_ApiT apiHandle, json_object *responseJ) {
int err = wrap_json_unpack(entryJ, "{s:s, s:s !}", "fullpath", &fullpath, "filename", &filename);
if (err) {
AFB_ApiError(apiHandle, "CTL-INIT HOOPs invalid JSON entry= %s", json_object_get_string(entryJ));
- return NULL;
}
if (index == 0) {
- char filepath[CONTROL_MAXPATH_LEN];
strncpy(filepath, fullpath, strlen(fullpath)+1);
strncat(filepath, "/", strlen("/"));
strncat(filepath, filename, strlen(filename));
- return (strdup(filepath));
}
}
- // no config found
- return NULL;
+ json_object_put(responseJ);
+ return strndup(filepath, sizeof(filepath));
}
PUBLIC char* CtlConfigSearch(AFB_ApiT apiHandle, const char *dirList, const char *prefix) {
@@ -163,7 +161,7 @@ PUBLIC CtlConfigT *CtlLoadMetaData(AFB_ApiT apiHandle, const char* filepath) {
return ctlHandle;
OnErrorExit:
- if (ctlHandle) free(ctlHandle);
+ free(ctlHandle);
return NULL;
}
@@ -197,6 +195,8 @@ json_object* CtlUpdateSectionConfig(AFB_ApiT apiHandle, CtlConfigT *ctlHandle, c
if (oneFile) {
json_object *newSectionJ, *newFileJ = json_object_from_file(oneFile);
json_object_object_get_ex(newFileJ, key, &newSectionJ);
+ json_object_get(newSectionJ);
+ json_object_put(newFileJ);
LoadAdditionalsFiles(apiHandle, ctlHandle, key, newSectionJ);
json_object_object_get_ex(ctlHandle->configJ, key, &sectionArrayJ);
wrap_json_optarray_for_all(newSectionJ, wrap_json_array_add, sectionArrayJ);
@@ -245,7 +245,8 @@ json_object* LoadAdditionalsFiles(AFB_ApiT apiHandle, CtlConfigT *ctlHandle, con
}
if(json_object_array_length(filesArrayJ) > 0)
- return CtlUpdateSectionConfig(apiHandle, ctlHandle, key, sectionJ, filesArrayJ);
+ sectionJ = CtlUpdateSectionConfig(apiHandle, ctlHandle, key, sectionJ, filesArrayJ);
+ json_object_put(filesArrayJ);
return sectionJ;
}
diff --git a/ctl-lib/ctl-lua.c b/ctl-lib/ctl-lua.c
index f80668e..f8ab69d 100644
--- a/ctl-lib/ctl-lua.c
+++ b/ctl-lib/ctl-lua.c
@@ -1267,6 +1267,7 @@ PUBLIC int LuaConfigLoad (AFB_ApiT apiHandle) {
return 0;
OnErrorExit:
+ free(luaState);
return 1;
}
@@ -1324,6 +1325,7 @@ PUBLIC int LuaConfigExec (AFB_ApiT apiHandle, const char* prefix) {
}
}
+ json_object_put(luaScriptPathJ);
// no policy config found remove control API from binder
if (index == 0) {
AFB_ApiWarning (apiHandle, "POLICY-INIT:WARNING (setenv CONTROL_LUA_PATH) No LUA '%s*.lua' in '%s'", fullprefix, dirList);
diff --git a/ctl-lib/ctl-plugin.c b/ctl-lib/ctl-plugin.c
index 6ec1ace..be3cf67 100644
--- a/ctl-lib/ctl-plugin.c
+++ b/ctl-lib/ctl-plugin.c
@@ -206,9 +206,12 @@ STATIC int PluginLoadOne (AFB_ApiT apiHandle, CtlPluginT *ctlPlugin, json_object
ctlPlugin->api = apiHandle;
ctlPlugin->context = (*ctlPluginOnload) (ctlPlugin, handle);
}
+
+ json_object_put(pluginPathJ); // No more needs for that json_object.
return 0;
OnErrorExit:
+ json_object_put(pluginPathJ); // No more needs for that json_object.
return 1;
}