Modify privacy package APIs to handle global app case 48/147748/1
authorYunjin Lee <yunjin-.lee@samsung.com>
Tue, 5 Sep 2017 11:03:24 +0000 (20:03 +0900)
committerYunjin Lee <yunjin-.lee@samsung.com>
Tue, 5 Sep 2017 11:03:24 +0000 (20:03 +0900)
- When an application is installed/uninstalled/updated by owner(admin user),
  uid 376(TZ_SYS_GLOBALAPP_USER) is passed.
  Current privacy package APIs can handle only local apps so
  modify them to handle global app case.

Change-Id: Ib912fad803b54521ada675ea7d2f1aa180a3785a
Signed-off-by: Yunjin Lee <yunjin-.lee@samsung.com>
capi/src/privilege_db_manager.c

index fc0f2e5..a0162d6 100755 (executable)
@@ -1020,7 +1020,7 @@ int privilege_db_manager_is_privacy_requestable(const uid_t uid, const char* pkg
        if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
                return ret;
 
-       char* sql = sqlite3_mprintf("select is_privacy_requestable from privacy_package where uid=%d and pkg_id=%Q", uid, pkgid);
+       char* sql = sqlite3_mprintf("select is_privacy_requestable from privacy_package where (uid=%d or uid=%d) and pkg_id=%Q", uid, GLOBAL_USER, pkgid);
        TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
        _LOGD("sql: %s", sql);
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
@@ -1055,7 +1055,7 @@ int privilege_db_manager_is_critical_privilege(const uid_t uid, const char* pkgi
        if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
                return ret;
 
-       char* sql = sqlite3_mprintf("select is_critical from privacy_package where uid=%d and pkg_id=%Q and privilege_name=%Q", uid, pkgid, privilege);
+       char* sql = sqlite3_mprintf("select is_critical from privacy_package where (uid=%d or uid=%d) and pkg_id=%Q and privilege_name=%Q", uid, GLOBAL_USER, pkgid, privilege);
        TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
        _LOGD("sql: %s", sql);
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
@@ -1090,7 +1090,7 @@ int privilege_db_manager_get_all_privacy_package_list(const uid_t uid, GList** p
        if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
                return ret;
 
-       char *sql = sqlite3_mprintf("select distinct pkg_id from privacy_package where uid=%d", uid);
+       char *sql = sqlite3_mprintf("select distinct pkg_id from privacy_package where (uid=%d or uid=%d)", uid, GLOBAL_USER);
        TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
        TryReturn(ret == SQLITE_OK, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database: %s", sqlite3_errmsg(db));
@@ -1121,7 +1121,7 @@ int privilege_db_manager_get_privacy_list_by_pkgid(const uid_t uid, const char*
        if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
                return ret;
 
-       char *sql = sqlite3_mprintf("select distinct privacy_name from privacy_package where uid=%d and pkg_id=%Q", uid, pkgid);
+       char *sql = sqlite3_mprintf("select distinct privacy_name from privacy_package where (uid=%d or uid=%d) and pkg_id=%Q", uid, GLOBAL_USER, pkgid);
        TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
        TryReturn(ret == SQLITE_OK, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database: %s", sqlite3_errmsg(db));
@@ -1151,7 +1151,7 @@ int privilege_db_manager_get_package_list_by_privacy(const uid_t uid, const char
        if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
                return ret;
 
-       char *sql = sqlite3_mprintf("select distinct pkg_id from privacy_package where uid=%d and privacy_name=%Q", uid, privacy);
+       char *sql = sqlite3_mprintf("select distinct pkg_id from privacy_package where (uid=%d or uid=%d) and privacy_name=%Q", uid, GLOBAL_USER, privacy);
        TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
        TryReturn(ret == SQLITE_OK, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database: %s", sqlite3_errmsg(db));
@@ -1182,7 +1182,7 @@ int privilege_db_manager_get_privilege_list_by_pkgid_and_privacy(const uid_t uid
        if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
                return ret;
 
-       char *sql = sqlite3_mprintf("select distinct privilege_name from privacy_package where uid=%d and pkg_id=%Q and privacy_name=%Q", uid, pkgid, privacy);
+       char *sql = sqlite3_mprintf("select distinct privilege_name from privacy_package where (uid=%d or uid=%d) and pkg_id=%Q and privacy_name=%Q", uid, GLOBAL_USER, pkgid, privacy);
        TryReturn(sql != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
        ret = sqlite3_prepare_v2(db, sql, strlen(sql), &stmt, NULL);
        TryReturn(ret == SQLITE_OK, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] fail to prepare database: %s", sqlite3_errmsg(db));