return returnValue; \
}
-char* __get_policy_table(privilege_manager_policy_type_e policy_type)
+#define TRY_INIT_DB(type, db) { \
+ int ret = __initialize_db(type, db); \
+ if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) { \
+ return ret; \
+ } \
+}
+
+#define TRY_PREPARE_STMT(db, sql, stmt) { \
+ int ret = __prepare_stmt(db, sql, stmt); \
+ if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) { \
+ __finalize_db(db, *stmt, sql); \
+ return ret; \
+ } \
+}
+
+static const char* __get_policy_table(privilege_manager_policy_type_e policy_type)
{
switch (policy_type) {
case (PRVMGR_POLICY_TYPE_PREVENT):
}
}
-int __initialize_db(privilege_db_type_e type, sqlite3 ** db)
+static int __initialize_db(privilege_db_type_e type, sqlite3 ** db)
{
char *db_path = NULL;
int db_mode = SQLITE_OPEN_READONLY;
sqlite3_close(*db);
return PRIVILEGE_DB_MANAGER_ERR_CONNECTION_FAIL;
}
+ if (*db == NULL) {
+ _LOGE("[DB_FAIL] Can't open database %s : db handle is NULL", db_path);
+ return PRIVILEGE_DB_MANAGER_ERR_CONNECTION_FAIL;
+ }
+
return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
-void __finalize_db(sqlite3 *db, sqlite3_stmt *stmt, char* sql)
+static void __finalize_db(sqlite3 *db, sqlite3_stmt *stmt, char* sql)
{
if (stmt != NULL)
sqlite3_finalize(stmt);
if (db != NULL)
- sqlite3_close(db);
+ sqlite3_close_v2(db);
if (sql != NULL)
sqlite3_free(sql);
}
-int __make_privilege_list_str(GList *privilege_list, char** privilege_list_str)
+static int __prepare_stmt(sqlite3 *db, char* sql, sqlite3_stmt **stmt)
+{
+ TryReturn(sql != NULL, , PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "query is NULL");
+
+ int ret = sqlite3_prepare_v2(db, sql, strlen(sql), stmt, NULL);
+ if (ret != SQLITE_OK) {
+ _LOGE("sqlite3_prepare_v2() failed. ret %d[%s]", ret, sqlite3_errmsg(db));
+ return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
+ }
+
+ return PRIVILEGE_DB_MANAGER_ERR_NONE;
+}
+
+static int __make_privilege_list_str(GList *privilege_list, char** privilege_list_str)
{
- GList *l;
char* temp_privilege_list_str = NULL;
- for (l = privilege_list; l != NULL; l = l->next) {
+ for (GList* l = privilege_list; l != NULL; l = l->next) {
char *privilege_name = (char *)l->data;
- if (temp_privilege_list_str == NULL)
+ if (temp_privilege_list_str == NULL) {
temp_privilege_list_str = sqlite3_mprintf("'%q'", privilege_name);
- else
- temp_privilege_list_str = sqlite3_mprintf("%s, '%q'", temp_privilege_list_str, privilege_name);
+ } else {
+ char* temp = sqlite3_mprintf("%s, '%q'", temp_privilege_list_str, privilege_name);
+ sqlite3_free(temp_privilege_list_str);
+ temp_privilege_list_str = temp;
+ }
+ if (temp_privilege_list_str == NULL)
+ return -1;
}
*privilege_list_str = temp_privilege_list_str;
return 0;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
+
int ret = 0;
int count = 0;
- ret = __initialize_db(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) {
- _LOGE("db initialize failed. ret = %d", ret);
- return ret;
- }
-
char *privilege_list_str = NULL;
ret = __make_privilege_list_str(privilege_list, &privilege_list_str);
+ if (ret == -1) {
+ _LOGE("__make_privilege_list_str() failed.");
+ return PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY;
+ }
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
+
char *sql = sqlite3_mprintf("select distinct privilege_name from prevent_list where privilege_name in(%s)and (uid=%d or uid=%d) and package_type=%d", privilege_list_str, uid, GLOBAL_USER, package_type);
sqlite3_free(privilege_list_str);
- 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
do {
ret = sqlite3_step(stmt);
sqlite3_stmt *stmt = NULL;
int ret;
- ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
-
- GList *temp_privilege_list = NULL;
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privilege_name, privilege_level_id from privilege_info where package_type_id=%d", package_type);
- 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
+ GList *temp_privilege_list = NULL;
do {
ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
sqlite3_stmt *stmt = NULL;
int ret;
- ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
-
GList *temp_privilege_list = NULL;
char *privilege_list_str = NULL;
ret = __make_privilege_list_str(privilege_list, &privilege_list_str);
TryReturn(ret == 0 && privilege_list_str != NULL, sqlite3_close(db), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] making privilege_list_str for where in query is failed.");
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
+
char *sql = sqlite3_mprintf("select distinct mapped_privilege_name from privilege_mapping where package_type_id=%d and privilege_name in(%s) and from_api_version<=%Q and to_api_version>%Q", package_type, privilege_list_str, api_version, api_version, package_type);
sqlite3_free(privilege_list_str);
- 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
do {
ret = sqlite3_step(stmt);
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
+
char *sql = sqlite3_mprintf("select privacy_display from privacy_info where privacy_name=%Q", privacy_name);
- 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));
- ret = sqlite3_step(stmt);
+ TRY_PREPARE_STMT(db, sql, &stmt);
+
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
*privacy_display = strdup((char*)sqlite3_column_text(stmt, 0));
TryReturn(*privacy_display != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
- ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privilege_display from privilege_info where package_type_id=%d and privilege_name=%Q", package_type, privilege_name);
- 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
- ret = sqlite3_step(stmt);
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
*privilege_display = strdup((char *)sqlite3_column_text(stmt, 0));
TryReturn(*privilege_display != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
- ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privilege_description from privilege_info where package_type_id=%d and privilege_name=%Q", package_type, privilege_name);
- 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
- ret = sqlite3_step(stmt);
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
*privilege_description = strdup((char *)sqlite3_column_text(stmt, 0));
TryReturn(*privilege_description != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_name's strdup is failed.");
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
- ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privilege_group_id from privilege_info where package_type_id=%d and privilege_name=%Q",
package_type, privilege_name);
- 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
- ret = sqlite3_step(stmt);
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
*privilege_group_id = (int)sqlite3_column_int(stmt, 0);
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
int res = 0;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL");
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = NULL;
switch (type) {
__finalize_db(db, stmt, sql);
return PRIVILEGE_DB_MANAGER_ERR_INVALID_TYPE;
}
- 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));
- ret = sqlite3_step(stmt);
+ TRY_PREPARE_STMT(db, sql, &stmt);
+
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
switch (type) {
case 'v':
return res;
}
+// TODO: change it to get package's privacy option only.
int privilege_db_manager_is_privacy_white_list(const char* pkgid, const char* privilege)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL");
int privacy_id = 0;
- ret = privilege_db_manager_get_privacy_id_by_privilege(privilege, &privacy_id);
+ int ret = privilege_db_manager_get_privacy_id_by_privilege(privilege, &privacy_id);
TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] privilege_db_manager_get_privacy_id_by_privilege failed");
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
+
char *sql = sqlite3_mprintf("select privacy_option from privacy_whitelist where pkg_id=%Q", 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
int res = 0;
do {
return res;
}
+// TODO: make it to get package's privacy option and settable info only.
int privilege_db_manager_is_user_settable(const char* pkgid, const char* privacy_name)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int res = 1;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL");
+ int res = 1;
int privacy_id = 0;
- ret = privilege_db_manager_get_privacy_id(privacy_name, &privacy_id);
+ int ret = privilege_db_manager_get_privacy_id(privacy_name, &privacy_id);
TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] privilege_db_manager_get_privacy_id failed");
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
+
char *sql = sqlite3_mprintf("select privacy_option, settable from privacy_whitelist where pkg_id=%Q", 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
res = 1;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
- TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE, , ret, "[PRIVILEGE_DB_MANAGER] DB INITIALIZE FAIL. ret = %d", ret);
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
char *sql = sqlite3_mprintf("select * from disable_list where privilege_name=%Q and (uid=%d or uid=%d)", privilege, 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));
+ TRY_PREPARE_STMT(db, sql, &stmt);
- ret = sqlite3_step(stmt);
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW)
ret = 1;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select DISTINCT privacy_name from privilege_info where is_privacy=1 and package_type='core' order by privacy_name");
- 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privacy_list = NULL;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select distinct privilege_name from privilege_info where is_privacy=1 and privacy_name=%Q", 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privilege_list = NULL;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privacy_name from privilege_info where privilege_name=%Q and package_type='core'", privilege);
- 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
+
ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
*privacy_name = strdup((char*)sqlite3_column_text(stmt, 0));
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select distinct privilege_name from privilege_info where privacy_name=(select distinct privacy_name from privilege_info where privilege_name=%Q and is_privacy=1)", privilege);
- 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privilege_list = NULL;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privacy_id from privacy_info where privacy_name=(select privacy_name from privilege_info where privilege_name=%Q and package_type='core')", privilege);
- 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));
- ret = sqlite3_step(stmt);
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
+
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
int tmp = (int)sqlite3_column_int(stmt, 0);
*privacy_id = tmp;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_INFO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
char *sql = sqlite3_mprintf("select privacy_id from privacy_info where privacy_name=%Q", 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));
- ret = sqlite3_step(stmt);
+
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
+
+ int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
int tmp = (int)sqlite3_column_int(stmt, 0);
*privacy_id = tmp;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
+
char* sql = NULL;
if (policy_type == PRVMGR_POLICY_TYPE_DISABLE)
sql = sqlite3_mprintf("select privilege_name from %Q where (uid=%d or uid=%d)", __get_policy_table(policy_type), uid, GLOBAL_USER);
else if (policy_type == PRVMGR_POLICY_TYPE_PREVENT)
sql = sqlite3_mprintf("select privilege_name from %Q where uid=%d and package_type=%d", __get_policy_table(policy_type), uid, package_type);
- 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList *temp_privilege_list = NULL;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_POLICY_RW, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RW, &db);
TryReturn(sqlite3_exec(db, "BEGIN IMMEDIATE TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, NULL, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for BEGIN IMMEDIATE TRANSACTION failed");
GList *l = NULL;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_POLICY_RW, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RW, &db);
TryReturn(sqlite3_exec(db, "BEGIN IMMEDIATE TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, NULL, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for BEGIN IMMEDIATE TRANSACTION failed");
- GList *l = NULL;
- for (l = privilege_list; l != NULL; l = l->next) {
+
+ for (GList *l = privilege_list; l != NULL; l = l->next) {
char *privilege_name = (char *)l->data;
char* sql = sqlite3_mprintf("delete from prevent_list where uid=%d and package_type=%d and privilege_name=%Q", uid, package_type, privilege_name);
TryReturn(sql != NULL, sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL); __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY, "[DB_FAIL] sqlite3_mprintf failed");
return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
+//TODO: Do insert only. DO NOT determine whether to insert or not in here.
int privilege_db_manager_set_package_critical_privilege_info(const uid_t uid, const char* pkgid, privilege_manager_package_type_e package_type, const char* api_version, GList* critical_privilege_list)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
GList* mapped_privilege_list = NULL;
ret = privilege_db_manager_get_mapped_privilege_list(api_version, package_type, critical_privilege_list, &mapped_privilege_list);
TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE && mapped_privilege_list != NULL, __finalize_db(db, stmt, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] privilege_db_manager_get_mapped_privilege_list failed");
TryReturn(sqlite3_exec(db, "BEGIN IMMEDIATE TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, NULL, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for BEGIN IMMEDIATE TRANSACTION failed");
- GList *l = NULL;
- for (l = mapped_privilege_list; l != NULL; l = l->next) {
+
+ for (GList *l = mapped_privilege_list; l != NULL; l = l->next) {
char *privilege_name = (char *)l->data;
if (strstr(privilege_name, "/internal/") == NULL) {
char* sql = NULL;
return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
+//TODO: Do insert only. DO NOT determine whether to insert or not in here.
int privilege_db_manager_set_package_privacy_privilege_info(const uid_t uid, const char* pkgid, privilege_manager_package_type_e package_type, const char* api_version, GList* privilege_list)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
+
GList* mapped_privilege_list = NULL;
ret = privilege_db_manager_get_mapped_privilege_list(api_version, package_type, privilege_list, &mapped_privilege_list);
TryReturn(ret == PRIVILEGE_DB_MANAGER_ERR_NONE && mapped_privilege_list != NULL, __finalize_db(db, stmt, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] privilege_db_manager_get_mapped_privilege_list failed");
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
+
+ char* sql = sql = sqlite3_mprintf("delete from privacy_package where pkg_id = %Q and uid = %d", pkgid, uid);
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
- char* sql = NULL;
- sql = sqlite3_mprintf("delete from privacy_package where pkg_id = %Q and uid = %d", pkgid, uid);
- 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));
ret = sqlite3_step(stmt);
if (ret != SQLITE_DONE)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
char* sql = NULL;
if (g_privilege_profile_type == PRIVILEGE_PROFILE_TYPE_WEARABLE || pkg_type == PRVMGR_PACKAGE_TYPE_CORE) {
} else {
sql = sqlite3_mprintf("select (case when api_version < 4 or (api_version < 5 and privacy_name=%Q) then 0 else 1 end) from privacy_package where (uid=%d or uid=%d) and pkg_id=%Q and privilege_name=%Q", STORAGE_PRIVACY, uid, GLOBAL_USER, pkgid, privilege);
}
- 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
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");
- 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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_package_list = NULL;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privacy_list = NULL;
do {
return PRIVILEGE_DB_MANAGER_ERR_NONE;
}
+
int privilege_db_manager_get_package_list_by_privacy(const uid_t uid, const char* privacy, GList** package_list)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_package_list = NULL;
do {
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = __initialize_db(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
- if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE)
- return ret;
+ int ret;
+
+ TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
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));
+
+ TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privilege_list = NULL;
do {