Fix resource leak 16/174616/3 accepted/tizen/unified/20180413.073528 submit/tizen/20180405.052927 submit/tizen/20180412.043849
authorYunjin Lee <yunjin-.lee@samsung.com>
Tue, 3 Apr 2018 07:40:42 +0000 (16:40 +0900)
committerYunjin Lee <yunjin-.lee@samsung.com>
Tue, 3 Apr 2018 07:57:35 +0000 (16:57 +0900)
CID: 109774, 107686

Change-Id: Ie85e020b35f1e6ff48b61b9ad26dc5a20da59d0f
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
ui/src/privacy_package_list_view.c

index 0240fc82f7aaf9f8797dd31cf681255c80cd53ac..3c0901cda0a43f4c943de632524a04e468050182 100644 (file)
@@ -343,7 +343,7 @@ static int pkg_app_list_cb(pkgmgrinfo_appinfo_h pkg_handle, void* user_data)
        int ret = pkgmgrinfo_appinfo_get_appid(pkg_handle, &appid);
        return_if(ret != PMINFO_R_OK, , -1, "pkgmgrinfo_appinfo_get_appid failed");
        char* appidd = strdup(appid);
-       return_if(appid == NULL, , -1, "appid strdup failed");
+       return_if(appidd == NULL, , -1, "appid strdup failed");
        pkg_data->applist = g_list_append(pkg_data->applist, appidd);
        return ret;
 }
@@ -354,7 +354,7 @@ static int pkg_list_cb(pkgmgrinfo_pkginfo_h filter_handle, void *user_data)
        char *pkgid = NULL;
        int ret = pkgmgrinfo_pkginfo_get_pkgid(filter_handle, &pkgid);
        char *pkgidd = strdup(pkgid);
-       return_if(ret != PMINFO_R_OK, , -1, "pkgmgrinfo_pkginfo_get_pkgname failed");
+       return_if(ret != PMINFO_R_OK, free(pkgidd); free(privilege_name), -1, "pkgmgrinfo_pkginfo_get_pkgname failed");
        GList* find = g_list_find_custom(pkg_list, pkgid, (GCompareFunc)strcmp);
        if (find != NULL) {
                /* Add privilege info to package data list */
@@ -369,13 +369,15 @@ static int pkg_list_cb(pkgmgrinfo_pkginfo_h filter_handle, void *user_data)
                                break;
                        }
                }
+               free(privilege_name);
+               free(pkgidd);
                return ret;
        }
 
        /* Add app list to package data item */
        pkgmgrinfo_pkginfo_h pkg_handle;
        ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &pkg_handle);
-       return_if(ret != PMINFO_R_OK, , -1, "pkgmgrinfo_pkginfo_get_pkginfo failed");
+       return_if(ret != PMINFO_R_OK, free(pkgidd); free(privilege_name), -1, "pkgmgrinfo_pkginfo_get_pkginfo failed");
 
        /* See if the package is user-settable */
        int is_settable = privilege_info_is_user_settable(pkgid, privacy_name);
@@ -386,11 +388,16 @@ static int pkg_list_cb(pkgmgrinfo_pkginfo_h filter_handle, void *user_data)
 
                /* Make package data item */
                pkg_data_s *pkg_data = (pkg_data_s *)malloc(sizeof(pkg_data_s));
-               return_if(pkg_data == NULL, pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "malloc of pkg_data failed.");
+               return_if(pkg_data == NULL, free(privilege_name); free(pkgidd); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "malloc of pkg_data failed.");
+               pkg_data->label=NULL;
+               pkg_data->icon=NULL;
+               pkg_data->applist=NULL;
+               pkg_data->privlist=NULL;
+               pkg_data->pkgid=NULL;
 
                /* Add pkg id to package data item */
                pkg_data->pkgid = strdup(pkgid);
-               return_if(pkg_data->pkgid == NULL, free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "strdup of pkg_data->pkgid failed");
+               return_if(pkg_data->pkgid == NULL, free(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "strdup of pkg_data->pkgid failed");
 
                /* Add privilege info to package data item */
                pkg_data->privlist = NULL;
@@ -399,23 +406,23 @@ static int pkg_list_cb(pkgmgrinfo_pkginfo_h filter_handle, void *user_data)
                /* Add app list to package data item */
                pkg_data->applist = NULL;
                ret = pkgmgrinfo_appinfo_get_list(pkg_handle, PMINFO_ALL_APP, pkg_app_list_cb, pkg_data);
-               return_if(ret != PMINFO_R_OK, free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_appinfo_get_list failed");
+               return_if(ret != PMINFO_R_OK, free(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_appinfo_get_list failed");
 
                /* See if the package is global. TBD: If notion for handling of global app is required. */
                pkg_data->is_global = false;
                ret = pkgmgrinfo_pkginfo_is_global(pkg_handle, &pkg_data->is_global);
-               return_if(ret != PMINFO_R_OK, free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_is_global failed");
+               return_if(ret != PMINFO_R_OK, free(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_is_global failed");
 
                /* Get package label */
                char* label = NULL;
                ret = pkgmgrinfo_pkginfo_get_label(pkg_handle, &label);
-               return_if(ret != PMINFO_R_OK, free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_get_label failed");
+               return_if(ret != PMINFO_R_OK, free(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_get_label failed");
                pkg_data->label = strdup(label);
 
                /* Get package icon path */
                char* icon = NULL;
                ret = pkgmgrinfo_pkginfo_get_icon(pkg_handle, &icon);
-               return_if(ret != PMINFO_R_OK, free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_get_icon failed");
+               return_if(ret != PMINFO_R_OK, free(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_get_icon failed");
                if (EINA_TRUE == ecore_file_exists(icon))
                        pkg_data->icon = strdup(icon);
                else
@@ -428,6 +435,8 @@ static int pkg_list_cb(pkgmgrinfo_pkginfo_h filter_handle, void *user_data)
                /* Append package data item to package_data_list */
                pkg_data_list = g_list_append(pkg_data_list, pkg_data);
        }
+       free(privilege_name);
+       free(pkgidd);
        pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle);
        return ret;
 }
@@ -501,7 +510,6 @@ void create_privacy_package_list_view(struct app_data_s* ad)
 
        /* Append privacy related package as genlist item */
        GList* l;
-       int i = 0;
        Elm_Object_Item *it = NULL;
        if (!pkg_data_list) {
                genlist = elm_layout_add(ad->nf);