/**
- * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ * Copyright (c) 2016-2018 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#define DEFAULT_ICON_PATH _TZ_SYS_RO_APP"/org.tizen.privacy-setting/res/icon/default.png"
#define UIDMAXLEN 10
+#define SAFE_FREE(src) { if (src) {free(src); src = NULL; } }
static void privacy_package_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
static void free_pkg_data(pkg_data_s *pkg_data)
{
- if (pkg_data->pkgid)
- free(pkg_data->pkgid);
- if (pkg_data->label)
- free(pkg_data->label);
- if (pkg_data->icon)
- free(pkg_data->icon);
+ SAFE_FREE(pkg_data->pkgid);
+ SAFE_FREE(pkg_data->label);
+ SAFE_FREE(pkg_data->icon);
if (pkg_data->applist)
g_list_free_full(pkg_data->applist, free);
if (pkg_data->privlist)
static void gl_menu_desc_del_cb(void *data, Evas_Object *obj)
{
char *text = data;
- free(text);
+ SAFE_FREE(text);
}
static char* gl_text_get_cb(void *data, Evas_Object *obj, const char *part)
static int pkg_list_cb(pkgmgrinfo_pkginfo_h filter_handle, void *user_data)
{
- char* privilege_name = strdup((char*)user_data);
char *pkgid = NULL;
int ret = pkgmgrinfo_pkginfo_get_pkgid(filter_handle, &pkgid);
return_if(ret != PMINFO_R_OK, , -1, "pkgmgrinfo_pkginfo_get_pkgid failed");
- char *pkgidd = strdup(pkgid);
+
+ char* privilege_name = strdup((char*)user_data);
+ return_if(privilege_name == NULL, , -1, "strdup failed");
GList* find = g_list_find_custom(pkg_list, pkgid, (GCompareFunc)strcmp);
if (find != NULL) {
/* Add privilege info to package data list */
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, free(privilege_name); free(pkgidd), -1, "pkgmgrinfo_pkginfo_get_pkginfo failed");
+ return_if(ret != PMINFO_R_OK, SAFE_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);
if (is_settable == 1) {
-
+ char *pkgidd = strdup(pkgid);
+ return_if(pkgidd == NULL, SAFE_FREE(privilege_name); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "strdup failed");
pkg_list = g_list_append(pkg_list, pkgidd);
/* Make package data item */
pkg_data_s *pkg_data = (pkg_data_s *)malloc(sizeof(pkg_data_s));
- return_if(pkg_data == NULL, free(privilege_name); free(pkgidd); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "malloc of pkg_data failed.");
+ return_if(pkg_data == NULL, SAFE_FREE(privilege_name); SAFE_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(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "strdup of pkg_data->pkgid failed");
+ pkg_data->pkgid=pkgidd;
/* Add privilege info to package data item */
pkg_data->privlist = NULL;
/* 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(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_appinfo_get_list failed");
+ return_if(ret != PMINFO_R_OK, SAFE_FREE(privilege_name); SAFE_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(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_is_global failed");
+ return_if(ret != PMINFO_R_OK, SAFE_FREE(privilege_name); SAFE_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(privilege_name); free(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_get_label failed");
+ return_if(ret != PMINFO_R_OK, SAFE_FREE(privilege_name); SAFE_FREE(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "pkgmgrinfo_pkginfo_get_label failed");
pkg_data->label = strdup(label);
+ return_if(pkg_data->label == NULL, SAFE_FREE(privilege_name); SAFE_FREE(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "strdup of pkg_data->label failed");
/* Get package icon path */
char* icon = NULL;
ret = pkgmgrinfo_pkginfo_get_icon(pkg_handle, &icon);
- 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");
+ return_if(ret != PMINFO_R_OK, SAFE_FREE(privilege_name); SAFE_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
pkg_data->icon = strdup(DEFAULT_ICON_PATH);
+ return_if(pkg_data->icon == NULL, SAFE_FREE(privilege_name); SAFE_FREE(pkgidd); free_pkg_data(pkg_data); pkgmgrinfo_pkginfo_destroy_pkginfo(pkg_handle), -1, "strdup of pkg_data->icon failed");
/* Get package privacy status */
pkg_data->status = false;
/* 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;
}
static int get_uniq_pkg_list_by_privacy(const char* privacy)
{
int ret = 0;
- /* For privilege list loop -> Get pkg_list by privilege */
- if (pkg_list != NULL) {
- g_list_free_full(pkg_list, free);
- pkg_list = NULL;
- }
if (pkg_data_list != NULL) {
g_list_free_full(pkg_data_list, free_extension_pkg_data);
pkg_data_list = NULL;
+ pkg_list = NULL;
}
GList* l;
int uid = getuid();