Fix crash issue when getting appcontrol info 39/180639/1
authorSangyoon Jang <jeremy.jang@samsung.com>
Thu, 31 May 2018 10:57:14 +0000 (19:57 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Thu, 31 May 2018 10:57:14 +0000 (19:57 +0900)
Change-Id: I312520ffda5dc6ceb2b338bce8e6e482404551f0
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/pkgmgrinfo_appinfo.c

index ed3ba9a..48b041c 100644 (file)
@@ -149,7 +149,8 @@ static int _appinfo_get_category(sqlite3 *db, const char *appid,
        return PMINFO_R_OK;
 }
 
-static void __parse_appcontrol(GList **appcontrol, char *appcontrol_str)
+static void __parse_appcontrol(GList **appcontrol, char *appcontrol_str,
+               char *visibility)
 {
        char *dup;
        char *token;
@@ -180,6 +181,7 @@ static void __parse_appcontrol(GList **appcontrol, char *appcontrol_str)
                token = strtok_r(NULL, "|", &ptr);
                if (token && strcmp(token, "NULL"))
                        ac->mime = strdup(token);
+               ac->visibility = strdup(visibility);
                *appcontrol = g_list_append(*appcontrol, ac);
        } while ((token = strtok_r(NULL, ";", &ptr)));
 
@@ -190,12 +192,13 @@ static int _appinfo_get_app_control(sqlite3 *db, const char *appid,
                GList **appcontrol)
 {
        static const char query_raw[] =
-               "SELECT app_control FROM package_app_app_control "
+               "SELECT app_control, visibility FROM package_app_app_control "
                "WHERE app_id=%Q";
        int ret;
        char *query;
        sqlite3_stmt *stmt;
        char *str;
+       char *visibility;
 
        query = sqlite3_mprintf(query_raw, appid);
        if (query == NULL) {
@@ -212,10 +215,13 @@ static int _appinfo_get_app_control(sqlite3 *db, const char *appid,
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
                str = NULL;
+               visibility = NULL;
                _save_column_str(stmt, 0, &str);
+               _save_column_str(stmt, 0, &visibility);
                /* TODO: revise */
-               __parse_appcontrol(appcontrol, str);
+               __parse_appcontrol(appcontrol, str, visibility);
                free(str);
+               free(visibility);
        }
 
        sqlite3_finalize(stmt);