Appmanager 38/111138/1
authorRadek Kintop <r.kintop@samsung.com>
Thu, 19 Jan 2017 13:43:00 +0000 (14:43 +0100)
committerRadek Kintop <r.kintop@samsung.com>
Thu, 19 Jan 2017 13:43:00 +0000 (14:43 +0100)
- Fixed crash when app/package attributes are NULL

Change-Id: I0b635631f5c04f0f9f92a07051a49f78de5eae63
Signed-off-by: Radek Kintop <r.kintop@samsung.com>
setting-appmgr/src/setting-appmgr-main.c
setting-appmgr/src/setting-appmgr-utils.c

index fa013919ed8bfe2b34d2db4bfdc3991ab48a790b..5973b00f435cb1db45588458e2324c83f93e91d9 100644 (file)
@@ -893,9 +893,12 @@ static void _app_node_2_ui_node_adapter(const app_node *info, ui_node **node)
                        "Could not allocate memory, aborting");
                abort();
        }
-       (*node)->icon_path = strdup(info->icon_path);
-       (*node)->id = strdup(info->appid);
-       (*node)->label = strdup(info->label);
+       if (info->icon_path)
+               (*node)->icon_path = strdup(info->icon_path);
+       if (info->appid)
+               (*node)->id = strdup(info->appid);
+       if (info->label)
+               (*node)->label = strdup(info->label);
        (*node)->size = info->ram_used;
 }
 
@@ -912,8 +915,11 @@ static void _package_node_2_ui_node_adapter(const package_node *info,
                        "Could not allocate memory, aborting");
                abort();
        }
-       (*node)->icon_path = strdup(info->icon_path);
-       (*node)->id = strdup(info->pkgid);
-       (*node)->label = strdup(info->label);
+       if (info->icon_path)
+               (*node)->icon_path = strdup(info->icon_path);
+       if (info->pkgid)
+               (*node)->id = strdup(info->pkgid);
+       if (info->label)
+               (*node)->label = strdup(info->label);
        (*node)->size = info->package_size;
 }
index 74ef5df34aaa48301840c46801b414ca7840ec45..0057f3f65c88a29d1b90c3dd3d2e09538cfaf157 100644 (file)
@@ -205,12 +205,21 @@ void free_package_node_internals(package_node *node)
 
 void appmgr_utils_update_app_node(app_node *node, app_info_h app_info)
 {
+       char *label = NULL;
        ret_if(!node);
 
        (void)app_info_get_app_id(app_info, &node->appid);
        (void)app_info_get_package(app_info, &node->pkgid);
        (void)app_info_get_label(app_info, &node->label);
 
+       if (!node->label) {
+               (void)app_info_get_exec(app_info, &label);
+               if (label) {
+                       node->label = strdup(basename(label));
+                       free(label);
+               }
+       }
+
        (void)app_info_get_icon(app_info, &node->icon_path);
        if (EINA_TRUE != ecore_file_exists(node->icon_path)) {
                free(node->icon_path);