From: Yunjin Lee Date: Tue, 5 Sep 2017 11:03:24 +0000 (+0900) Subject: Modify privacy package APIs to handle global app case X-Git-Tag: submit/tizen_4.0/20170915.091315~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c69d5de340fd6435b669bc327b2f9134f832e255;p=platform%2Fcore%2Fsecurity%2Fprivilege-checker.git Modify privacy package APIs to handle global app case - 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 --- diff --git a/capi/src/privilege_db_manager.c b/capi/src/privilege_db_manager.c index fc0f2e5..a0162d6 100755 --- a/capi/src/privilege_db_manager.c +++ b/capi/src/privilege_db_manager.c @@ -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));