Change 'ay' to 'a(y)' to avoid null character problem at ZCL scene clsuter
authorsaerome kim <saerome.kim@samsung.com>
Sat, 4 Feb 2017 07:15:58 +0000 (16:15 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 11 May 2017 09:07:20 +0000 (18:07 +0900)
Change-Id: I00fbdcfccb8dd620e59b7b98a08f226c5393fdaf
Signed-off-by: saerome kim <saerome.kim@samsung.com>
lib/zbl-dbus.c

index 969e1cbab19579563affa8e176fd153f882bcaf0..5e6385ea681ad29f5e29e5496d5890caebf10d26 100644 (file)
@@ -2754,10 +2754,10 @@ GROUP_VIEW_GROUP_REQ_OUT:
                GVariantIter *sceneNameIter = NULL;
                GVariantIter *extendedSetIter = NULL;
 
-               g_variant_get(parameters, "(qyyqyqayyay)", &addr16, &ep, &status, &group_id, &scene_id,
+               g_variant_get(parameters, "(qyyqyqa(y)ya(y))", &addr16, &ep, &status, &group_id, &scene_id,
                        &transition_time, &sceneNameIter, &ext_len, &extendedSetIter);
 
-               g_variant_iter_loop(sceneNameIter, "y", &value);
+               g_variant_iter_loop(sceneNameIter, "(y)", &value);
 
                /** first byte indicates the length of the string */
                len = value -'0';
@@ -2769,7 +2769,7 @@ GROUP_VIEW_GROUP_REQ_OUT:
                        }
                        scene_name[j] = value;
                        j++;
-                       while (g_variant_iter_loop(sceneNameIter, "y", &value)) {
+                       while (g_variant_iter_loop(sceneNameIter, "(y)", &value)) {
                                scene_name[j] = value;
                                j++;
                        }
@@ -2789,7 +2789,7 @@ GROUP_VIEW_GROUP_REQ_OUT:
                                ERR("calloc() Fail(%d)", errno);
                                goto SCENE_VIEW_SCENE_REQ_OUT;
                        }
-                       while (g_variant_iter_loop(extendedSetIter, "y", &value)) {
+                       while (g_variant_iter_loop(extendedSetIter, "(y)", &value)) {
                                extendedFieldSets[j] = value;
                                j++;
                        }
@@ -2855,7 +2855,7 @@ SCENE_VIEW_SCENE_REQ_OUT:
                unsigned char *scene_list = NULL;
                GVariantIter *sceneListIter = NULL;
 
-               g_variant_get(parameters, "(qyyyqyay)", &addr16, &ep, &status, &capacity, &group_id,
+               g_variant_get(parameters, "(qyyyqya(y))", &addr16, &ep, &status, &capacity, &group_id,
                        &scene_count, &sceneListIter);
 
                if (0 < scene_count) {
@@ -2864,7 +2864,7 @@ SCENE_VIEW_SCENE_REQ_OUT:
                                ERR("calloc() Fail(%d)", errno);
                                goto SCENE_GET_SCENE_MEMBERSHIP_REQ_OUT;
                        }
-                       while (g_variant_iter_loop(sceneListIter, "y", &value)) {
+                       while (g_variant_iter_loop(sceneListIter, "(y)", &value)) {
                                scene_list[j] = value;
                                DBG("Scene_List 0x%02X", scene_list[j]);
                                j++;
@@ -6825,26 +6825,26 @@ int zbl_add_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id,
        container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
        container->userdata = user_data;
 
-       scenename_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
+       scenename_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
        while ('\0' != scene_name[j]) {
-               g_variant_builder_add(scenename_builder, "y", scene_name[j]);
+               g_variant_builder_add(scenename_builder, "(y)", scene_name[j]);
                j++;
        }
        scenename_variant = g_variant_builder_end(scenename_builder);
        g_variant_builder_unref(scenename_builder);
 
-       extensionfieldSet_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
+       extensionfieldSet_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
 
        while (index < ext_field_len) {
                INFO("Ext contents 0x%02X", extension_field_sets[index]);
-               g_variant_builder_add(extensionfieldSet_builder, "y", extension_field_sets[index]);
+               g_variant_builder_add(extensionfieldSet_builder, "(y)", extension_field_sets[index]);
                index++;
        }
        extensionfieldSet_variant = g_variant_builder_end(extensionfieldSet_builder);
        g_variant_builder_unref(extensionfieldSet_builder);
 
        g_dbus_proxy_call(zcl_scene_proxy, "add_scene",
-               g_variant_new("(qyqyqq@ay@ay)", addr16, ep, group_id, scene_id, transition_time,
+               g_variant_new("(qyqyqq@a(y)@a(y))", addr16, ep, group_id, scene_id, transition_time,
                ext_field_len, scenename_variant, extensionfieldSet_variant), G_DBUS_CALL_FLAGS_NONE,
                to, NULL, NULL, container);