diff options
author | Hans Dedecker <dedeckeh@gmail.com> | 2015-04-13 18:18:36 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-04-20 15:43:19 +0200 |
commit | 7798d56301b7264cbcea0a6a9225a210154c693a (patch) | |
tree | bd7020f6aecccc6df6ea5ed50f8eec15578029db /lua | |
parent | 2d660c519d2fcff95248da9f4fd9b37d61f9eb09 (diff) | |
download | ubus-7798d56301b7264cbcea0a6a9225a210154c693a.tar.gz |
ubus: Fix issues reported by static code analysis tool Klocwork
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'lua')
-rw-r--r-- | lua/ubus.c | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -382,6 +382,9 @@ static int ubus_lua_load_methods(lua_State *L, struct ubus_method *m) /* setup the policy pointers */ p = malloc(sizeof(struct blobmsg_policy) * plen); + if (!p) + return 1; + memset(p, 0, sizeof(struct blobmsg_policy) * plen); m->policy = p; lua_pushnil(L); @@ -417,6 +420,9 @@ static struct ubus_object* ubus_lua_load_object(lua_State *L) /* setup object pointers */ obj = malloc(sizeof(struct ubus_lua_object)); + if (!obj) + return NULL; + memset(obj, 0, sizeof(struct ubus_lua_object)); obj->o.name = lua_tostring(L, -2); @@ -427,6 +433,11 @@ static struct ubus_object* ubus_lua_load_object(lua_State *L) /* setup type pointers */ obj->o.type = malloc(sizeof(struct ubus_object_type)); + if (!obj->o.type) { + free(obj); + return NULL; + } + memset(obj->o.type, 0, sizeof(struct ubus_object_type)); obj->o.type->name = lua_tostring(L, -2); obj->o.type->id = 0; @@ -529,10 +540,11 @@ ubus_lua_call_cb(struct ubus_request *req, int type, struct blob_attr *msg) { lua_State *L = (lua_State *)req->priv; - if (!msg) + if (!msg && L) lua_pushnil(L); - ubus_lua_parse_blob_array(L, blob_data(msg), blob_len(msg), true); + if (msg && L) + ubus_lua_parse_blob_array(L, blob_data(msg), blob_len(msg), true); } static int @@ -598,6 +610,9 @@ ubus_lua_load_event(lua_State *L) struct ubus_lua_event* event = NULL; event = malloc(sizeof(struct ubus_lua_event)); + if (!event) + return NULL; + memset(event, 0, sizeof(struct ubus_lua_event)); event->e.cb = ubus_event_handler; |