Fix coverity issues
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-interface / src / zigbee_service_dbus_interface_zcl_global_control.c
index dd66b3f..1478f0e 100644 (file)
@@ -90,13 +90,13 @@ static gboolean on_zclglobal_control_read_attributes_req(ZigbeeZcl_global_contro
        ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
        GVariantIter *iter = NULL;
-       gint i = 0;
+       guint i = 0;
 
        gboolean ret;
 
        memset(&req, 0x0, sizeof(ZigbeeZclGlobalControlReadAttributesRequest_t));
 
-       req.attribute_id = g_try_malloc0_n(attribute_ids_length, sizeof(unsigned char));
+       req.attribute_id = g_try_malloc0_n(attribute_ids_length, sizeof(unsigned short));
        if (NULL == req.attribute_id) {
                Z_LOGE("Failed to allocation !");
 
@@ -110,7 +110,7 @@ static gboolean on_zclglobal_control_read_attributes_req(ZigbeeZcl_global_contro
        g_variant_get(attribute_id, "a(y)", &iter);
        while (g_variant_iter_loop(iter, "(y)", &(req.attribute_id[i]))) {
                i++;
-               if (i >= attribute_ids_length)
+               if (i >= (attribute_ids_length * sizeof(unsigned short)))
                        break;
        }
        req.attribute_id_len = attribute_ids_length;
@@ -216,6 +216,7 @@ static gboolean on_zclglobal_control_write_attributes_req(ZigbeeZcl_global_contr
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -245,6 +246,7 @@ static gboolean on_zclglobal_control_write_attributes_req(ZigbeeZcl_global_contr
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -254,6 +256,10 @@ static gboolean on_zclglobal_control_write_attributes_req(ZigbeeZcl_global_contr
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ,
                &req, sizeof(req),
                on_zclglobal_control_write_attributes_req_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.write_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -330,6 +336,7 @@ static gboolean on_zclglobal_control_write_attributes_undivided_req(ZigbeeZcl_gl
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -357,6 +364,7 @@ static gboolean on_zclglobal_control_write_attributes_undivided_req(ZigbeeZcl_gl
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -366,6 +374,10 @@ static gboolean on_zclglobal_control_write_attributes_undivided_req(ZigbeeZcl_gl
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ,
                &req, sizeof(req),
                on_zclglobal_control_write_attributes_undivided_req_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.write_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -442,6 +454,7 @@ static gboolean on_zclglobal_control_write_attributes_no_resp(ZigbeeZcl_global_c
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -469,6 +482,7 @@ static gboolean on_zclglobal_control_write_attributes_no_resp(ZigbeeZcl_global_c
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -478,6 +492,10 @@ static gboolean on_zclglobal_control_write_attributes_no_resp(ZigbeeZcl_global_c
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP,
                &req, sizeof(req),
                on_zclglobal_control_write_attributes_no_resp_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.write_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -554,6 +572,7 @@ static gboolean on_zclglobal_control_write_attributes_structured(ZigbeeZcl_globa
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -581,6 +600,7 @@ static gboolean on_zclglobal_control_write_attributes_structured(ZigbeeZcl_globa
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.write_records);
                return TRUE;
        }
 
@@ -590,6 +610,10 @@ static gboolean on_zclglobal_control_write_attributes_structured(ZigbeeZcl_globa
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED,
                &req, sizeof(req),
                on_zclglobal_control_write_attributes_structured_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.write_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -666,6 +690,7 @@ static gboolean on_zclglobal_control_read_attributes_structured(ZigbeeZcl_global
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.read_records);
                return TRUE;
        }
 
@@ -693,6 +718,7 @@ static gboolean on_zclglobal_control_read_attributes_structured(ZigbeeZcl_global
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.read_records);
                return TRUE;
        }
 
@@ -702,6 +728,10 @@ static gboolean on_zclglobal_control_read_attributes_structured(ZigbeeZcl_global
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED,
                &req, sizeof(req),
                on_zclglobal_control_read_attributes_structured_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.read_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -778,6 +808,7 @@ static gboolean on_zclglobal_control_configure_reporting_req(ZigbeeZcl_global_co
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.read_records);
                return TRUE;
        }
 
@@ -805,6 +836,7 @@ static gboolean on_zclglobal_control_configure_reporting_req(ZigbeeZcl_global_co
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.read_records);
                return TRUE;
        }
 
@@ -814,6 +846,10 @@ static gboolean on_zclglobal_control_configure_reporting_req(ZigbeeZcl_global_co
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ,
                &req, sizeof(req),
                on_zclglobal_control_configure_reporting_req_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.read_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -890,6 +926,7 @@ static gboolean on_zclglobal_control_read_configure_reporting(ZigbeeZcl_global_c
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.read_records);
                return TRUE;
        }
 
@@ -917,6 +954,7 @@ static gboolean on_zclglobal_control_read_configure_reporting(ZigbeeZcl_global_c
                /* Send failure response */
                ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
 
+               g_free(req.read_records);
                return TRUE;
        }
 
@@ -926,6 +964,10 @@ static gboolean on_zclglobal_control_read_configure_reporting(ZigbeeZcl_global_c
                ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING,
                &req, sizeof(req),
                on_zclglobal_control_read_configure_reporting_resp, resp_cb_data);
+
+       /* Free resource */
+       g_free(req.read_records);
+
        if (FALSE == ret) {
                Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
 
@@ -1326,7 +1368,7 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
 
        NOT_USED(noti_cb_data);
 
-       switch(noti_id) {
+       switch (noti_id) {
        case ZBLIB_ZCL_GLOBAL_NOTI_READ_ATTR_RSP: {
                ZigbeeZclGlobalControlReadAttributesResp_t *attr_t =
                        (ZigbeeZclGlobalControlReadAttributesResp_t*)noti_data;
@@ -1413,16 +1455,16 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        TRUE, NULL, NULL);
                if (NULL == v_types || NULL == v_attrs) {
                        Z_LOGE("Failed to create variant!");
-                       if (v_types)
-                               g_variant_unref(v_types);
-                       if (v_attrs)
-                               g_variant_unref(v_attrs);
                } else {
                        Z_LOGD("Discover attribute resp");
                        zigbee_zcl_global_control_emit_discover_attribute_rsp(global_control_object,
                                attr_t->node_id, attr_t->src_ep, v_types, v_attrs,
                                attr_t->cluster_id, attr_t->record_length, attr_t->discovery_completed);
                }
+               if (v_types)
+                       g_variant_unref(v_types);
+               if (v_attrs)
+                       g_variant_unref(v_attrs);
        break;
        }
        case ZBLIB_ZCL_GLOBAL_NOTI_WRITE_ATTR_STRUCTURED_RSP: {
@@ -1455,7 +1497,7 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        break;
                }
 
-               index_builder = g_variant_builder_new (G_VARIANT_TYPE ("aq"));
+               index_builder = g_variant_builder_new(G_VARIANT_TYPE("aq"));
                if (NULL == index_builder) {
                        Z_LOGE("Failed to create variant builder!");
                        g_variant_unref(v_status);
@@ -1463,20 +1505,12 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        g_variant_unref(v_indicator);
                        break;
                }
-               for(i = 0; i < attr_t->record_length; i++) {
-                       for(j = 0; j < attr_t->indicator_list[i]; j++) {
-                               g_variant_builder_add (index_builder, "q", attr_t->index_list[i][j]);
-                       }
+               for (i = 0; i < attr_t->record_length; i++) {
+                       for (j = 0; j < attr_t->indicator_list[i]; j++)
+                               g_variant_builder_add(index_builder, "q", attr_t->index_list[i][j]);
                }
-               v_index = g_variant_builder_end (index_builder);
+               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(
@@ -1484,6 +1518,12 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        v_status, v_attrs, v_indicator, v_index,
                        attr_t->cluster_id, attr_t->record_length,
                        attr_t->node_id, attr_t->src_ep);
+               if (v_status)
+                       g_variant_unref(v_status);
+               if (v_attrs)
+                       g_variant_unref(v_attrs);
+               if (v_indicator)
+                       g_variant_unref(v_indicator);
        break;
        }
        case ZBLIB_ZCL_GLOBAL_NOTI_DISCOVER_CMDS_RECEIVED_RSP: {
@@ -1502,6 +1542,8 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                                v_commands, attr_t->cluster_id, attr_t->list_count,
                                attr_t->node_id, attr_t->src_ep, attr_t->discovery_completed);
                }
+               if (v_commands)
+                       g_variant_unref(v_commands);
        break;
        }
        case ZBLIB_ZCL_GLOBAL_NOTI_DISCOVER_CMDS_GENERATED_RSP: {
@@ -1520,6 +1562,8 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                                v_commands, attr_t->cluster_id, attr_t->list_count,
                                attr_t->node_id, attr_t->src_ep, attr_t->discovery_completed);
                }
+               if (v_commands)
+                       g_variant_unref(v_commands);
        break;
        }
        case ZBLIB_ZCL_GLOBAL_NOTI_DISCOVER_ATTR_EXT_RSP: {
@@ -1538,12 +1582,6 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        attr_t->access_list, attr_t->list_count, TRUE, NULL, NULL);
                if (NULL == v_attrs_type || NULL == v_attrs || NULL == v_access) {
                        Z_LOGE("Failed to create variant!");
-                       if (v_attrs_type)
-                               g_variant_unref(v_attrs_type);
-                       if (v_attrs)
-                               g_variant_unref(v_attrs);
-                       if (v_access)
-                               g_variant_unref(v_access);
                } else {
                        Z_LOGD("Discover attributes extended resp");
                        zigbee_zcl_global_control_emit_discover_attributes_extended_rsp(
@@ -1552,6 +1590,12 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                                attr_t->cluster_id, attr_t->list_count,
                                attr_t->node_id, attr_t->src_ep, attr_t->discovery_completed);
                }
+               if (v_attrs_type)
+                       g_variant_unref(v_attrs_type);
+               if (v_attrs)
+                       g_variant_unref(v_attrs);
+               if (v_access)
+                       g_variant_unref(v_access);
        break;
        }
        case ZBLIB_ZCL_GLOBAL_NOTI_DEFAULT_RSP: {
@@ -1578,37 +1622,34 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                v_attrs = g_variant_new_from_data(G_VARIANT_TYPE("aq"),
                        attr_t->attribute_list, (sizeof(gushort) * attr_t->list_count),
                        TRUE, NULL, NULL);
+               if (NULL == v_attrs) {
+                       Z_LOGE("Failed to create variant!");
+                       break;
+               }
                v_data_type = g_variant_new_from_data(G_VARIANT_TYPE("a(y)"),
                        attr_t->data_type_list, attr_t->list_count, TRUE, NULL, NULL);
-               if (NULL == v_data_type || NULL == v_attrs) {
+               if (NULL == v_data_type) {
                        Z_LOGE("Failed to create variant!");
-                       if (v_data_type)
-                               g_variant_unref(v_data_type);
                        if (v_attrs)
                                g_variant_unref(v_attrs);
                        break;
                }
 
-               values_builder = g_variant_builder_new (G_VARIANT_TYPE ("a(y)"));
+               values_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
                if (NULL == values_builder) {
                        Z_LOGE("Failed to create variant builder!");
-                       g_variant_unref(v_data_type);
-                       g_variant_unref(v_attrs);
+                       if (v_attrs)
+                               g_variant_unref(v_attrs);
+                       if (v_data_type)
+                               g_variant_unref(v_data_type);
                        break;
                }
-               for(i = 0; i < attr_t->list_count; i++) {
-                       for(j = 0; j < attr_t->values_count[i]; j++) {
-                               g_variant_builder_add (values_builder, "(y)", attr_t->values[i][j]);
-                       }
+               for (i = 0; i < attr_t->list_count; i++) {
+                       for (j = 0; j < attr_t->values_count[i]; j++)
+                               g_variant_builder_add(values_builder, "(y)", attr_t->values[i][j]);
                }
-               v_values = g_variant_builder_end (values_builder);
+               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(
@@ -1616,6 +1657,12 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        attr_t->node_id, attr_t->src_ep, attr_t->cluster_id,
                        v_attrs, v_data_type, v_values,
                        attr_t->list_count);
+               if (v_attrs)
+                       g_variant_unref(v_attrs);
+               if (v_data_type)
+                       g_variant_unref(v_data_type);
+               if (v_values)
+                       g_variant_unref(v_values);
        break;
        }
        case ZBLIB_ZCL_GLOBAL_NOTI_READ_CONFIG_REPORT_RSP: {
@@ -1626,15 +1673,15 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
 
                GVariant *v_entries = NULL;
                GVariantBuilder *entry_builder =
-                               g_variant_builder_new (G_VARIANT_TYPE ("a(yyqyqqayq)"));
+                               g_variant_builder_new(G_VARIANT_TYPE("a(yyqyqqayq)"));
                if (NULL == entry_builder) {
                        Z_LOGE("Failed to create variant builder!");
                        break;
                }
 
-               for(i = 0; i < resp_t->record_count ; i++) {
+               for (i = 0; i < resp_t->record_count ; i++) {
                        GVariantBuilder *change_builder =
-                                       g_variant_builder_new (G_VARIANT_TYPE ("ay"));
+                                       g_variant_builder_new(G_VARIANT_TYPE("ay"));
                        if (NULL == change_builder) {
                                Z_LOGE("Failed to create variant builder!");
                                g_variant_builder_unref(entry_builder);
@@ -1642,11 +1689,11 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                        }
 
                        for (v = 0; v < resp_t->entry_list[i].change_count; v++) {
-                               g_variant_builder_add (change_builder, "y",
+                               g_variant_builder_add(change_builder, "y",
                                        resp_t->entry_list[i].change[v]);
                        }
 
-                       g_variant_builder_add (entry_builder, "(yyqyqqayq)",
+                       g_variant_builder_add(entry_builder, "(yyqyqqayq)",
                                resp_t->entry_list[i].status,
                                resp_t->entry_list[i].dir,
                                resp_t->entry_list[i].attribute_id,
@@ -1666,6 +1713,9 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                zigbee_zcl_global_control_emit_read_configure_reporting_rsp(
                        global_control_object, resp_t->node_id, resp_t->src_ep,
                        resp_t->cluster_id, resp_t->record_count, v_entries);
+
+               if (v_entries)
+                       g_variant_unref(v_entries);
        break;
        }
        default: