dbus: Fix wrong usage of GVariant 47/231647/5
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Thu, 23 Apr 2020 07:21:14 +0000 (16:21 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Mon, 11 May 2020 07:04:43 +0000 (07:04 +0000)
Change-Id: Ia0b20203a0b3e1ae45e4f0aa96dfd9501cc80bea

apps/extended-sd/src/es-internal-storage-page.c
apps/extended-sd/src/es-portable-storage-page.c
apps/extended-sd/src/extended-sd-main.c
src/auto-test/block.c

index 55f3d57..3d4e26c 100644 (file)
@@ -149,7 +149,12 @@ check_speed_done(GVariant *result, void *data, GError *err)
        ret_if(ad == NULL);
        ret_if(result == NULL);
 
-       g_variant_get(result, "(i)", &ret);
+       if (!dh_get_param_from_var(result, "(i)", &ret)) {
+               _E("Failed to get params from gvariant. expected:%s, type:%s", "(i)", g_variant_get_type_string(result));
+               g_variant_unref(result);
+               return;
+       }
+
        if (ret < 0) {
                DMSG("Performance warning: %d", ret);
                Evas_Object* page_content = elm_object_part_content_unset(ad->internal_storage_page_data->internal_storage_page_base_layout, "elm.swallow.content");
index 555d6ba..52cdda6 100644 (file)
@@ -58,17 +58,21 @@ format_done(GVariant *result, void *data, GError *err)
        ret_if(ad == NULL);
        ret_if(result == NULL);
 
-       g_variant_get(result, "(i)", &ret);
+       if (!dh_get_param_from_var(result, "(i)", &ret)) {
+               DMSG("Failed to get params from gvariant. expected:%s, type:%s", "(i)", g_variant_get_type_string(result));
+               goto out;
+       }
+
        if (ret < 0) {
                DMSG("Failed to format sd card as portable storage: %d", ret);
-               return;
+               goto out;
        }
 
        ret = dbus_handle_method_sync_var(STORAGED_BUS_NAME,
                        STORAGED_PATH_BLOCK_MANAGER, STORAGED_INTERFACE_BLOCK_MANAGER, "Mount", g_variant_new("(is)", ad->storage_id, ""));
        if (ret < 0) {
                DMSG("Failed to mount sd card as portable storage: %d", ret);
-               return;
+               goto out;
        }
 
        Evas_Object* page_content = elm_object_part_content_unset(ad->portable_storage_page_data->portable_storage_page_base_layout, "elm.swallow.content");
@@ -76,6 +80,7 @@ format_done(GVariant *result, void *data, GError *err)
        page_content = create_page_3(ad);
        elm_object_part_content_set(ad->portable_storage_page_data->portable_storage_page_base_layout, "elm.swallow.content", page_content);
 
+out:
        g_variant_unref(result);
        FUNC_END();
 }
@@ -90,7 +95,6 @@ mapper_device_cb(int mapper_id, storage_dev_e dev, storage_state_e state,
        GVariant *output;
        GVariantIter *iter;
        char *new_fstype;
-       bool new_primary;
        int ret;
        int id;
 
@@ -111,33 +115,38 @@ mapper_device_cb(int mapper_id, storage_dev_e dev, storage_state_e state,
        if (state != STORAGE_STATE_REMOVED)
                return;
 
-       output = dbus_handle_method_sync_with_reply_var(STORAGED_BUS_NAME,
-                       STORAGED_PATH_BLOCK_MANAGER, STORAGED_INTERFACE_BLOCK_MANAGER, "GetDeviceList", g_variant_new("(s)", "mmc"));
-       if (!output) {
-               DMSG("Failed to get storage information.");
-               return;
-       }
+       if (primary) {
+               output = dbus_handle_method_sync_with_reply_var(STORAGED_BUS_NAME,
+                               STORAGED_PATH_BLOCK_MANAGER, STORAGED_INTERFACE_BLOCK_MANAGER, "GetDeviceList", g_variant_new("(s)", "mmc"));
+               if (!output) {
+                       DMSG("Failed to get storage information.");
+                       return;
+               }
+               if (!dh_get_param_from_var(output, "(a(issssssisibii))", &iter)) {
+                       DMSG("Failed to get params from gvariant. expected:%s, type:%s", "(a(issssssisibii))", g_variant_get_type_string(output));
+                       g_variant_unref(output);
+                       return;
+               }
 
-       g_variant_get(output, "(a(issssssisibii))", &iter);
-
-       while (g_variant_iter_loop(iter, "(issssssisibii)",
-                               NULL, NULL, NULL,
-                               NULL, &new_fstype,
-                               NULL, NULL,
-                               NULL, NULL,
-                               NULL, &new_primary,
-                               NULL, &id)) {
-               if (!primary)
-                       continue;
-               if (strncmp(new_fstype, LUKS_NAME, strlen(LUKS_NAME) + 1))
-                       continue;
-
-               DMSG("Get Primary MMC=%d", id);
-               ad->storage_id = id;
-               break;
-       }
+               while (g_variant_iter_loop(iter, "(issssssisibii)",
+                                       NULL, NULL, NULL,
+                                       NULL, &new_fstype,
+                                       NULL, NULL,
+                                       NULL, NULL,
+                                       NULL, NULL,
+                                       NULL, &id)) {
+                       if (strncmp(new_fstype, LUKS_NAME, strlen(LUKS_NAME) + 1))
+                               continue;
+
+                       DMSG("Get Primary MMC=%d", id);
+                       ad->storage_id = id;
+                       break;
+               }
 
-       g_variant_iter_free(iter);
+               g_free(new_fstype);
+               g_variant_iter_free(iter);
+               g_variant_unref(output);
+       }
 
        ret = dbus_handle_method_async_with_reply_var(STORAGED_BUS_NAME,
                        STORAGED_PATH_BLOCK_MANAGER,
@@ -163,12 +172,17 @@ unmount_done(GVariant *result, void *data, GError *err)
        ret_if(ad == NULL);
        ret_if(result == NULL);
 
-       g_variant_get(result, "(i)", &ret);
-       if (ret < 0) {
-               DMSG("Failed to format sd card as portable storage: %d", ret);
-               return;
+       if (!dh_get_param_from_var(result, "(i)", &ret)) {
+               _E("Failed to get params from gvariant. expected:%s, type:%s", "(i)", g_variant_get_type_string(result));
+               goto out;
        }
 
+       if (ret < 0)
+               DMSG("Failed to format sd card as portable storage: %d", ret);
+
+out:
+       g_variant_unref(result);
+
        FUNC_END();
 }
 
index 0fe6cda..dc7709f 100644 (file)
@@ -146,19 +146,26 @@ app_control(app_control_h app_control, void *data)
                create_home_page_base_layout(ad);
 
        output = dbus_handle_method_sync_with_reply_var(STORAGED_BUS_NAME,
-                       STORAGED_PATH_BLOCK_MANAGER, STORAGED_INTERFACE_BLOCK_MANAGER, "GetMmcPrimary", NULL);
+                       STORAGED_PATH_BLOCK_MANAGER,
+                       STORAGED_INTERFACE_BLOCK_MANAGER,
+                       "GetMmcPrimary",
+                       NULL);
        if (!output) {
                DMSG("Failed to get storage information.");
                return;
        }
-
-       g_variant_get(output, "(issssssisibii)", NULL, &devpath, NULL, NULL,
-                       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &id);
+       if (!dh_get_param_from_var(output, "(issssssisibii)", NULL, &devpath, NULL, NULL,
+                       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &id)) {
+               DMSG("Failed to get params from gvariant. expected:%s, type:%s", "(issssssisibii)", g_variant_get_type_string(output));
+               g_variant_unref(output);
+               return;
+       }
 
        DMSG("Get Primary MMC=%d devpath=%s", id, devpath);
        ad->storage_id = id;
-       ad->devpath = strdup(devpath);
+       ad->devpath = devpath;
 
+       g_variant_unref(output);
 }
 
 static void
index 262ceb9..553d9be 100644 (file)
@@ -141,17 +141,24 @@ static bool block_getdevicelist(char *type)
                return ret;
        }
 
-       g_variant_get(msg, "(a(issssssisibii))", &iter);
+       if (!dh_get_param_from_var(msg, "(a(issssssisibii))", &iter)) {
+               _E("Failed to get params from gvariant. expected:%s, type:%s", "(a(issssssisibii))", g_variant_get_type_string(msg));
+               g_variant_unref(msg);
+               return ret;
+       }
+
        while (g_variant_iter_loop(iter, "(issssssisibii)",
                        NULL, NULL, NULL, NULL, NULL, NULL,
                        NULL, NULL, NULL, NULL, NULL, NULL, &val)) {
                _D("Device id=%d", val);
                ret = TRUE;
        }
-
        g_variant_iter_free(iter);
 
        _I("Success. (%s): %d", METHOD_BLOCK_GETDEVICELIST, ret);
+
+       g_variant_unref(msg);
+
        return ret;
 }
 
@@ -174,7 +181,12 @@ static bool block_getdevicelist2(char *type)
                return ret;
        }
 
-       g_variant_get(msg, "(a(issssssisibi))", &iter);
+       if (!dh_get_param_from_var(msg, "(a(issssssisibi))", &iter)) {
+               _E("Failed to get params from gvariant. expected:%s, type:%s", "(a(issssssisibi))", g_variant_get_type_string(msg));
+               g_variant_unref(msg);
+               return ret;
+       }
+
        while (g_variant_iter_loop(iter, "(issssssisibi)",
                        NULL, &val, NULL, NULL, NULL, NULL,
                        NULL, NULL, NULL, NULL, NULL, NULL)) {
@@ -185,6 +197,8 @@ static bool block_getdevicelist2(char *type)
        g_variant_iter_free(iter);
 
        _I("Success. %s: %d", METHOD_BLOCK_GETDEVICELIST2, ret);
+
+       g_variant_unref(msg);
        return ret;
 }
 
@@ -243,6 +257,8 @@ static bool block_getdeviceinfo(int id)
        }
 
        _I("Success. %s: %d", METHOD_BLOCK_GETDEVICEINFO, ret);
+
+       g_variant_unref(msg);
        return ret;
 }
 
@@ -273,6 +289,8 @@ static bool block_getmmcprimary()
 
        _D("Id=%d", val);
        _I("Success. %s: %d", METHOD_BLOCK_GETMMCPRIMARY, ret);
+
+       g_variant_unref(msg);
        return ret;
 }