Fix coverity issues
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-interface / src / zigbee_service_dbus_interface_zcl_global_control.c
index 19eb958..1478f0e 100644 (file)
@@ -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!");
 
@@ -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: {
@@ -1476,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: {
@@ -1494,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: {
@@ -1512,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: {
@@ -1530,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(
@@ -1544,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: {
@@ -1570,12 +1622,14 @@ 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;
@@ -1584,8 +1638,10 @@ void zigbee_service_dbus_interface_zcl_global_control_notification(ZigBeeService
                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++) {
@@ -1601,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: {
@@ -1651,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: