From c7075bd9200f88cdb5a8c5d036f3f8f2d198ca6b Mon Sep 17 00:00:00 2001 From: Jiwan Kim Date: Fri, 10 Feb 2017 16:46:21 +0900 Subject: [PATCH] Fix SVace warnings Change-Id: I3c031601f7bb2de606d17fd7922766752d00385d Signed-off-by: Jiwan Kim --- .../src/zigbee_service_dbus_interface.c | 11 +++-- ...bee_service_dbus_interface_zcl_global_control.c | 13 ------ .../src/zigbee_service_dbus_interface_zdo_bind.c | 26 ++++++------ ...zigbee_service_dbus_interface_zdo_dev_control.c | 8 ++-- zigbee-daemon/zigbee-lib/src/zblib_request.c | 2 +- zigbee-daemon/zigbee-lib/src/zblib_service.c | 49 +++++++++++++++++++++- 6 files changed, 75 insertions(+), 34 deletions(-) diff --git a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface.c b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface.c index b40748c..b49633f 100644 --- a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface.c +++ b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface.c @@ -264,6 +264,8 @@ static void zigbee_on_name_lost(GDBusConnection *connection, Z_LOGW("'%s' - [Name Lost]", name); + zblib_check_null_ret("custom_data", custom_data); + NOT_USED(connection); /* Bus name is 'lost' */ @@ -280,6 +282,8 @@ static void zigbee_on_name_acquired(GDBusConnection *connection, NOT_USED(connection); + zblib_check_null_ret("custom_data", custom_data); + /* Bus name is 'acquired' */ custom_data->name_acquired = TRUE; @@ -446,7 +450,8 @@ gboolean zigbee_service_dbus_interface_init(ZigBeeService *service) } /* HASH table for maintaining 'objects' list */ - interface_data->objects = g_hash_table_new(g_str_hash, g_str_equal); + interface_data->objects = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, NULL); /* * Acquire "org.tizen.zigbee" named bus on D-BUS SYSTEM bus. @@ -507,8 +512,8 @@ void zigbee_service_dbus_interface_deinit(ZigBeeService *service) } interface_data = (ZigbeeCustomData_t *)zblib_service_interface_ref_user_data(service_interface); - if (NULL == service_interface) { - Z_LOGE("D-BUS service interface not found!"); + if (NULL == interface_data) { + Z_LOGE("D-BUS interface data not found!"); goto EXIT; } diff --git a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_global_control.c b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_global_control.c index d90560c..c8f1fe2 100644 --- a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_global_control.c +++ b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_global_control.c @@ -1470,13 +1470,6 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService } v_index = g_variant_builder_end (index_builder); g_variant_builder_unref(index_builder); - if (NULL == index_builder) { - Z_LOGE("Failed to create variant!"); - g_variant_unref(v_status); - g_variant_unref(v_attrs); - g_variant_unref(v_indicator); - break; - } Z_LOGD("Write attribute structured resp"); zigbee_zcl_global_control_emit_write_attribute_structured_rsp( @@ -1603,12 +1596,6 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService } v_values = g_variant_builder_end (values_builder); g_variant_builder_unref(values_builder); - if (NULL == values_builder) { - Z_LOGE("Failed to create variant!"); - g_variant_unref(v_data_type); - g_variant_unref(v_attrs); - break; - } Z_LOGD("Report attributes handler resp"); zigbee_zcl_global_control_emit_report_attr_handler_rsp( diff --git a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_bind.c b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_bind.c index 9f56332..ffdabcc 100644 --- a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_bind.c +++ b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_bind.c @@ -93,6 +93,7 @@ static gboolean on_zdo_bind_bind_req(ZigbeeZdo_bind *zdo_bind_object, GVariantIter *iter = NULL; gint i = 0; + guchar value = 0; gboolean ret; @@ -101,18 +102,18 @@ static gboolean on_zdo_bind_bind_req(ZigbeeZdo_bind *zdo_bind_object, /* Update request structure */ req.node_id = node_id; g_variant_get(src_addr, "a(y)", &iter); - while (g_variant_iter_loop(iter, "(y)", req.src_addr[i])) { + while (i < ZIGBEE_EUI64_SIZE && g_variant_iter_loop(iter, "(y)", &value)) { + req.src_addr[i] = value; i++; - if (i >= ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1) - break; } req.src_ep = src_ep; req.cluster_id = cluster_id; + + i = 0; g_variant_get(dst_addr, "a(y)", &iter); - while (g_variant_iter_loop(iter, "(y)", req.dst_addr[i])) { + while (i < ZIGBEE_EUI64_SIZE && g_variant_iter_loop(iter, "(y)", &value)) { + req.dst_addr[i] = value; i++; - if (i >= ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1) - break; } req.bind_type = bind_type; req.group_addr = group_addr; @@ -201,6 +202,7 @@ static gboolean on_zdo_bind_unbind_req(ZigbeeZdo_bind *zdo_bind_object, GVariantIter *iter = NULL; gint i = 0; + guchar value = 0; gboolean ret; @@ -209,18 +211,18 @@ static gboolean on_zdo_bind_unbind_req(ZigbeeZdo_bind *zdo_bind_object, /* Update request structure */ req.node_id = node_id; g_variant_get(src_addr, "a(y)", &iter); - while (g_variant_iter_loop(iter, "(y)", req.src_addr[i])) { + while (i < ZIGBEE_EUI64_SIZE && g_variant_iter_loop(iter, "(y)", &value)) { + req.src_addr[i] = value; i++; - if (i >= ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1) - break; } req.src_ep = src_ep; req.cluster_id = cluster_id; + + i = 0; g_variant_get(dst_addr, "a(y)", &iter); - while (g_variant_iter_loop(iter, "(y)", req.dst_addr[i])) { + while (i < ZIGBEE_EUI64_SIZE && g_variant_iter_loop(iter, "(y)", &value)) { + req.dst_addr[i] = value; i++; - if (i >= ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1) - break; } req.bind_type = bind_type; req.group_addr = group_addr; diff --git a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_dev_control.c b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_dev_control.c index a18b6a9..0388c28 100644 --- a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_dev_control.c +++ b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_dev_control.c @@ -171,11 +171,11 @@ static void on_zdodev_control_matched_descriptor_req_resp(ZigBeeServiceInterface static gboolean on_zdodev_control_matched_descriptor_req(ZigbeeZdo_dev_control *zdodev_control_object, GDBusMethodInvocation *invocation, - gshort node_id, - gshort profile_id, - gchar num_in_cl, + gushort node_id, + gushort profile_id, + guchar num_in_cl, GVariant *in_cl, - gchar num_out_cl, + guchar num_out_cl, GVariant *out_cl, gpointer user_data) { diff --git a/zigbee-daemon/zigbee-lib/src/zblib_request.c b/zigbee-daemon/zigbee-lib/src/zblib_request.c index a43f636..5410353 100644 --- a/zigbee-daemon/zigbee-lib/src/zblib_request.c +++ b/zigbee-daemon/zigbee-lib/src/zblib_request.c @@ -126,7 +126,7 @@ static ZigBeeRequest *__zblib_request_ref_request_by_request_id(ZigBeeService *s /* Look-up requets_id in request hash table */ request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id); - if (NULL == request_table) { + if (NULL == request) { Z_LOGE("No request available for request_id: [%d]", request_id); return NULL; } diff --git a/zigbee-daemon/zigbee-lib/src/zblib_service.c b/zigbee-daemon/zigbee-lib/src/zblib_service.c index 6d64f8c..681dc31 100644 --- a/zigbee-daemon/zigbee-lib/src/zblib_service.c +++ b/zigbee-daemon/zigbee-lib/src/zblib_service.c @@ -114,17 +114,35 @@ static gboolean __zblib_service_init_plugin(ZigBeePlugin *plugin) static gboolean __zblib_service_unload_plugin(ZigBeePlugin *plugin) { const ZblibPluginDescriptor_t *descriptor = zblib_plugin_get_descriptor(plugin); - char *plugin_name = zblib_plugin_get_plugin_name(plugin); + char *plugin_name = NULL; zblib_check_null_ret_error("descriptor", descriptor, FALSE); zblib_check_null_ret_error("descriptor->unload", descriptor->unload, FALSE); + plugin_name = zblib_plugin_get_plugin_name(plugin); + descriptor->unload(plugin); Z_LOGI("plugin(%s) unloaded!", plugin_name); + g_free(plugin_name); + return TRUE; } +static void __zblib_service_remove_request_table_iter(gpointer key, + gpointer value, gpointer user_data) +{ + ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data; + gint request_id = (gint)key; + + NOT_USED(value); + + zblib_check_null_ret("service_interface", service_interface); + + Z_LOGD("Removing request id [%d]", request_id); + zblib_request_free(service_interface, request_id); +} + ZigBeeService *zblib_service_new() { ZigBeeService *service; @@ -150,6 +168,31 @@ void zblib_service_free(ZigBeeService *service) { zblib_check_null_ret("service", service); + if (service->request_table) { + GSList *interface_objs = NULL; + ZigBeeServiceInterface *service_interface = NULL; + + interface_objs = service->interface_objs; + if (NULL == interface_objs) { + Z_LOGE("interface_objs is NULL"); + } else { + while (interface_objs) { + service_interface = (ZigBeeServiceInterface *)interface_objs->data; + + /* Remove left request */ + g_hash_table_foreach(service->request_table, + __zblib_service_remove_request_table_iter, + service_interface); + + /* Move to next service interface */ + interface_objs = g_slist_next(interface_objs); + } + g_hash_table_remove_all(service->request_table); + g_hash_table_destroy(service->request_table); + service->request_table = NULL; + } + } + /* Free plug-ins */ if (service->plugins) { g_slist_free(service->plugins); @@ -208,6 +251,9 @@ gboolean zblib_service_remove_plugin(ZigBeeService *service, ZigBeePlugin *plugi /* Specific vendor plug-in would be removed */ service->plugins = g_slist_remove(service->plugins, plugin); + /* Deinitialize plugin */ + zblib_plugin_free(plugin); + return TRUE; } @@ -374,6 +420,7 @@ ZigBeeServiceInterface *zblib_service_ref_service_interface(ZigBeeService *servi service_interface = tmp_service_interface; break; } + g_free(object_name); list = g_slist_next(list); } -- 2.7.4