From: Jiwan Kim Date: Mon, 13 Feb 2017 04:34:54 +0000 (+0900) Subject: Fix issues for Group cluster X-Git-Tag: submit/tizen/20170512.045637~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a13c264db352a5ee325eba5948c8887adc3f59ae;p=platform%2Fcore%2Fconnectivity%2Fzigbee-manager.git Fix issues for Group cluster - There are some bugs on view_group / get_group_membership method Change-Id: I48e05e32ef9954fd2196ad5733c33315a2bbecfe Signed-off-by: Jiwan Kim --- diff --git a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_group.c b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_group.c index 833162d..7ade053 100644 --- a/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_group.c +++ b/zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_group.c @@ -173,9 +173,9 @@ static void on_zcl_group_view_group_resp(ZigBeeServiceInterface *service_interfa static gboolean on_zcl_group_view_group(ZigbeeZcl_group *zcl_group_object, GDBusMethodInvocation *invocation, - gshort node_id, - gchar dest_ep, - gshort group_id, + gushort node_id, + guchar dest_ep, + gushort group_id, gpointer user_data) { ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data; @@ -270,6 +270,7 @@ static gboolean on_zcl_group_get_group_membership(ZigbeeZcl_group *zcl_group_obj GVariantIter *iter = NULL; gint i = 0; + gushort value = 0; gboolean ret; @@ -279,12 +280,12 @@ static gboolean on_zcl_group_get_group_membership(ZigbeeZcl_group *zcl_group_obj req.node_id = node_id; req.dest_ep = dest_ep; req.group_count = group_count; - req.group_list = g_malloc0(sizeof(gshort) * group_count); + req.group_list = g_malloc0(sizeof(gushort) * group_count); g_variant_get(group_list, "aq", &iter); - while (g_variant_iter_loop(iter, "q", req.group_list[i])) { + while (i < group_count && g_variant_iter_loop(iter, "q", &value)) { + Z_LOGD(" cluster: [%d]", value); + req.group_list[i] = value; i++; - if (i >= group_count) - break; } /* Allocate response callback data */ @@ -294,6 +295,8 @@ static gboolean on_zcl_group_get_group_membership(ZigbeeZcl_group *zcl_group_obj if (NULL == resp_cb_data) { Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!"); + g_free(req.group_list); + /* Send failure response */ ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG); diff --git a/zigbee-daemon/zigbee-lib/src/zblib_request.c b/zigbee-daemon/zigbee-lib/src/zblib_request.c index 5410353..14c05da 100644 --- a/zigbee-daemon/zigbee-lib/src/zblib_request.c +++ b/zigbee-daemon/zigbee-lib/src/zblib_request.c @@ -2168,6 +2168,7 @@ static gpointer __zblib_request_create_zcl_group_request_data(guint request_type /* Copy data */ req->node_id = in_req->node_id; req->dest_ep = in_req->dest_ep; + req->group_id = in_req->group_id; } zcl_group_request_data = (gpointer)req; @@ -2189,7 +2190,7 @@ static gpointer __zblib_request_create_zcl_group_request_data(guint request_type req->dest_ep = in_req->dest_ep; req->group_count = in_req->group_count; req->group_list = (gushort *)g_memdup(in_req->group_list, - in_req->group_count); + sizeof(gushort) * in_req->group_count); } zcl_group_request_data = (gpointer)req;