} \
}
+#define SAFE_FREE(var) { if ((var) != NULL) {free(var); var = NULL; } }
+#define SAFE_SQLITE_FREE(sql) { if ((sql) != NULL) {sqlite3_free(sql); sql = NULL; } }
+#define SAFE_SQLITE_FINALIZE(stmt) { if ((stmt) != NULL) {sqlite3_finalize(stmt); stmt = NULL; } }
+#define SAFE_G_LIST_FREE_FULL(list, func) { if ((list) != NULL) {g_list_free_full(list, func); list = NULL; } }
+
static const char* __get_policy_table(privilege_manager_policy_type_e policy_type)
{
switch (policy_type) {
static void __finalize_db(sqlite3 *db, sqlite3_stmt *stmt, char* sql)
{
- if (stmt != NULL)
- sqlite3_finalize(stmt);
+ SAFE_SQLITE_FINALIZE(stmt);
+ SAFE_SQLITE_FREE(sql);
if (db != NULL)
sqlite3_close_v2(db);
-
- if (sql != NULL)
- sqlite3_free(sql);
}
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));
+ if (sqlite3_prepare_v2(db, sql, strlen(sql), stmt, NULL) != SQLITE_OK) {
+ _LOGE("sqlite3_prepare_v2() failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
return PRIVILEGE_DB_MANAGER_ERR_INVALID_QUERY;
}
temp_privilege_list_str = sqlite3_mprintf("'%q'", privilege_name);
} else {
char* temp = sqlite3_mprintf("%s, '%q'", temp_privilege_list_str, privilege_name);
- sqlite3_free(temp_privilege_list_str);
+ SAFE_SQLITE_FREE(temp_privilege_list_str);
temp_privilege_list_str = temp;
}
if (temp_privilege_list_str == NULL)
void privilege_db_manager_list_free(GList* list)
{
- g_list_free_full(list, free);
+ SAFE_G_LIST_FREE_FULL(list, free);
}
int privilege_db_manager_check_black_list(uid_t uid, privilege_manager_package_type_e package_type, GList* privilege_list)
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret = 0;
int count = 0;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
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.");
+ TryReturn(__make_privilege_list_str(privilege_list, &privilege_list_str) == 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.");
- 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);
+ char *sql = sqlite3_mprintf("select count(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);
+ SAFE_SQLITE_FREE(privilege_list_str);
TRY_PREPARE_STMT(db, sql, &stmt);
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW)
- ++count;
- } while (ret == SQLITE_ROW);
+ if (sqlite3_step(stmt) == SQLITE_ROW)
+ count = sqlite3_column_int(stmt, 0);
__finalize_db(db, stmt, sql);
return count;
}
+static void __free_privilege_info_db_row(privilege_info_db_row_s* p)
+{
+ SAFE_FREE(p->privilege_name);
+ SAFE_FREE(p);
+}
+
+static void __free_privilege_info_db_row_list(gpointer privilege_info_db_row_list)
+{
+ __free_privilege_info_db_row((privilege_info_db_row_s*)privilege_info_db_row_list);
+}
+
+void free_privilege_info_db_row_list(GList* row_list)
+{
+ SAFE_G_LIST_FREE_FULL(row_list, __free_privilege_info_db_row_list);
+}
+
+static privilege_info_db_row_s* __new_privilege_info_db_row(const char* privilege, int privilege_level_id)
+{
+ privilege_info_db_row_s *p = (privilege_info_db_row_s*)malloc(sizeof(privilege_info_db_row_s));
+ TryReturn(p != NULL, , NULL, "malloc() of privilege_info_db_row_s failed.");
+
+ p->privilege_name = g_strdup(privilege);
+ p->privilege_level_id = privilege_level_id;
+
+ return p;
+}
int privilege_db_manager_get_privilege_list(privilege_manager_package_type_e package_type, GList ** privilege_list)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList *temp_privilege_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- privilege_info_db_row_s *privilege_info_db_row = (privilege_info_db_row_s *)malloc(sizeof(privilege_info_db_row_s));
- TryReturn(privilege_info_db_row != NULL, free(privilege_info_db_row); __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] privilege_info_db_row's malloc is failed.");
-
- privilege_info_db_row->privilege_name = NULL;
- privilege_info_db_row->privilege_level_id = 0;
-
- privilege_info_db_row->privilege_name = strdup((char *)sqlite3_column_text(stmt, 0));
- TryReturn(privilege_info_db_row->privilege_name != NULL, free(privilege_info_db_row->privilege_name);
- free(privilege_info_db_row);
- __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.");
- privilege_info_db_row->privilege_level_id = sqlite3_column_int(stmt, 1);
-
- temp_privilege_list = g_list_append(temp_privilege_list, privilege_info_db_row);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ privilege_info_db_row_s *p = __new_privilege_info_db_row((const char*)sqlite3_column_text(stmt, 0), sqlite3_column_int(stmt, 1));
+ TryReturn(p != NULL, free_privilege_info_db_row_list(temp_privilege_list); __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY] __new_privilege_info_db_row() failed.");
+ temp_privilege_list = g_list_append(temp_privilege_list, p);
+ }
*privilege_list = temp_privilege_list;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
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.");
+ TryReturn(__make_privilege_list_str(privilege_list, &privilege_list_str) == 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.");
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);
+ SAFE_SQLITE_FREE(privilege_list_str);
TRY_PREPARE_STMT(db, sql, &stmt);
GList *temp_privilege_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privilege_name = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privilege_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
+ }
*mapped_privilege_list = temp_privilege_list;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
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.");
- __finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
+ *privacy_display = g_strdup((char*)sqlite3_column_text(stmt, 0));
+ } else {
+ ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
}
__finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
+ return ret;
}
int privilege_db_manager_get_privilege_display(privilege_manager_package_type_e package_type, const char *privilege_name, __attribute__((unused)) const char *api_version, char **privilege_display)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &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.");
- __finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
+ *privilege_display = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ } else {
+ ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
}
__finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
+ return ret;
}
int privilege_db_manager_get_privilege_description(privilege_manager_package_type_e package_type, const char *privilege_name, __attribute__((unused)) const char *api_version, char **privilege_description)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &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.");
-
- __finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
+ *privilege_description = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ } else {
+ ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
}
__finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
+ return ret;
}
int privilege_db_manager_get_privilege_group_id(privilege_manager_package_type_e package_type, const char *privilege_name, __attribute__((unused)) const char *api_version, int *privilege_group_id)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
-
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
- int ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
*privilege_group_id = (int)sqlite3_column_int(stmt, 0);
-
- __finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ } else {
+ ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
}
__finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
+ return ret;
}
int privilege_db_manager_is(char type, const char* privilege)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int res = 0;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
if (ret == SQLITE_ROW) {
switch (type) {
case 'v':
- res = 1;
+ ret = 1;
break;
case 'p':
case 'i':
- res = sqlite3_column_int(stmt, 0);
+ ret = sqlite3_column_int(stmt, 0);
break;
}
} else if (ret == SQLITE_DONE) {
- _LOGD("[PRIVILEGE_DB_MANAGER] NO DATA TO READ. %s is invalid privilege. ret = %d", privilege, ret);
+ _LOGD("[PRIVILEGE_DB_MANAGER] NO DATA TO READ. %s is invalid privilege.", privilege);
+ ret = 0;
} else {
- res = -1;
+ ret = -1;
}
__finalize_db(db, stmt, sql);
- if (res < 0)
- return -ret;
- else
- return res;
+ return ret;
}
// TODO: change it to get package's privacy option only.
TRY_PREPARE_STMT(db, sql, &stmt);
- int res = 0;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char* privacy_option = strdup((char *)sqlite3_column_text(stmt, 0));
- TryReturn(privacy_option != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER] privacy_option strdup failed");
- if (privacy_option[privacy_id] == '1') {
- res = 1;
- free(privacy_option);
- break;
- }
- free(privacy_option);
+ ret = 0;
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char* privacy_option = (char *)sqlite3_column_text(stmt, 0);
+ if (privacy_option[privacy_id] == '1') {
+ ret = 1;
+ break;
}
- } while (ret == SQLITE_ROW);
+ }
__finalize_db(db, stmt, sql);
- return res;
+
+ return ret;
}
// TODO: make it to get package's privacy option and settable info only.
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int res = 1;
int privacy_id = 0;
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_PREPARE_STMT(db, sql, &stmt);
- res = 1;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char* privacy_option = strdup((char *)sqlite3_column_text(stmt, 0));
- TryReturn(privacy_option != NULL, __finalize_db(db, stmt, sql), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "[PRIVILEGE_DB_MANAGER] privacy_option strdup failed");
- int settable_flag = (int)sqlite3_column_int(stmt, 1);
- if (privacy_option[privacy_id] == '1' && settable_flag == 1) {
- res = 1;
- free(privacy_option);
- break;
- } else if (privacy_option[privacy_id] == '1' && settable_flag == 0) {
- res = 0;
- free(privacy_option);
- break;
- } else {
- res = 1;
- }
- free(privacy_option);
+ ret = 1;
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char* privacy_option = (char *)sqlite3_column_text(stmt, 0);
+ int settable_flag = (int)sqlite3_column_int(stmt, 1);
+ if (privacy_option[privacy_id] == '1' && settable_flag == 1) {
+ break;
+ } else if (privacy_option[privacy_id] == '1' && settable_flag == 0) {
+ ret = 0;
+ break;
}
- } while (ret == SQLITE_ROW);
+ }
__finalize_db(db, stmt, sql);
- return res;
+
+ return ret;
}
int privilege_db_manager_is_disabled_privilege(uid_t uid, const char* privilege)
TRY_PREPARE_STMT(db, sql, &stmt);
- int ret = sqlite3_step(stmt);
-
- if (ret == SQLITE_ROW)
+ int ret = 0;
+ if (sqlite3_step(stmt) == SQLITE_ROW)
ret = 1;
- else
- ret = 0;
__finalize_db(db, stmt, sql);
return ret;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privacy_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privacy_name = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_privacy_list = g_list_append(temp_privacy_list, privacy_name);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privacy_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privacy_list = g_list_append(temp_privacy_list, privacy_name);
+ }
*privacy_list = temp_privacy_list;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privilege_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privilege_name = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privilege_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
+ }
__finalize_db(db, stmt, sql);
*privilege_list = temp_privilege_list;
return PRIVILEGE_DB_MANAGER_ERR_NONE;
-
}
int privilege_db_manager_get_privacy_by_privilege(const char* privilege, char** privacy_name)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- *privacy_name = strdup((char*)sqlite3_column_text(stmt, 0));
- ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
+ if (sqlite3_step(stmt) == SQLITE_ROW) {
+ *privacy_name = g_strdup((char*)sqlite3_column_text(stmt, 0));
} else {
ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
}
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_INFO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privilege_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privilege_name = strdup((char *)sqlite3_column_text(stmt, 0));
- TryReturn(privilege_name != NULL, __finalize_db(db, stmt, sql); g_list_free_full(temp_privilege_list, free), PRIVILEGE_DB_MANAGER_ERR_OUT_OF_MEMORY, "strdup failed");
- temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privilege_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
+ }
__finalize_db(db, stmt, sql);
int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
- int tmp = (int)sqlite3_column_int(stmt, 0);
- *privacy_id = tmp;
+ *privacy_id = (int)sqlite3_column_int(stmt, 0);
ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
} else {
ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
int ret = sqlite3_step(stmt);
if (ret == SQLITE_ROW) {
- int tmp = (int)sqlite3_column_int(stmt, 0);
- *privacy_id = tmp;
+ *privacy_id = (int)sqlite3_column_int(stmt, 0);
ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
} else {
+ _LOGD("privacy %s not exist", privacy);
ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
}
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
-
TRY_INIT_DB(PRIVILEGE_DB_TYPE_POLICY_RO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList *temp_privilege_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privilege_name = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
- } else if (ret != SQLITE_DONE) {
- _LOGE("ret = %d", ret);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privilege_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
+ }
*privilege_list = temp_privilege_list;
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
+ char* sql = NULL;
+
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;
- 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("insert or ignore into prevent_list (uid, package_type, privilege_name) values (%d, %d, %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");
- 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) {
- __get_db_error(&ret);
- sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL);
- __finalize_db(db, stmt, sql);
- return ret;
+ sql = sqlite3_mprintf("insert or ignore into prevent_list (uid, package_type, privilege_name) values (%d, %d, %Q)", uid, package_type, privilege_name);
+
+ if (__prepare_stmt(db, sql, &stmt) != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
+ }
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ _LOGE("sqlite3_step() failed. [%s]", sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
}
- sqlite3_finalize(stmt);
- stmt = NULL;
- sqlite3_free(sql);
+ SAFE_SQLITE_FINALIZE(stmt);
+ SAFE_SQLITE_FREE(sql);
}
- TryReturn(sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, stmt, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for COMMIT TRANSACTION failed");
- __finalize_db(db, stmt, NULL);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ _LOGE("DB update failed. Try ROLLBACK TRANSACTION.");
+ if (sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'ROLLBACK TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ }
+ } else {
+ if (sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'COMMIT TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ }
+ }
+
+ __finalize_db(db, stmt, sql);
+
+ return ret;
}
int privilege_db_manager_unset_black_list(int uid, privilege_manager_package_type_e package_type, GList *privilege_list)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
+ char* sql = NULL;
+
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");
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");
- 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) {
- __get_db_error(&ret);
- sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL);
- __finalize_db(db, stmt, sql);
- return ret;
+ sql = sqlite3_mprintf("delete from prevent_list where uid=%d and package_type=%d and privilege_name=%Q", uid, package_type, privilege_name);
+
+ if (__prepare_stmt(db, sql, &stmt) != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
}
- sqlite3_finalize(stmt);
- stmt = NULL;
- sqlite3_free(sql);
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ _LOGE("sqlite3_step() failed. [%s]", sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
+ }
+
+ SAFE_SQLITE_FINALIZE(stmt);
+ SAFE_SQLITE_FREE(sql);
}
- TryReturn(sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, stmt, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for COMMIT TRANSACTION failed");
- __finalize_db(db, stmt, NULL);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ _LOGE("DB update failed. Try ROLLBACK TRANSACTION.");
+ if (sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'ROLLBACK TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ }
+ } else {
+ if (sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'COMMIT TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ }
+ }
+
+ __finalize_db(db, stmt, sql);
+
+ return ret;
}
//TODO: Do insert only. DO NOT determine whether to insert or not in here.
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
+ char* sql = NULL;
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
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");
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;
char * privacy_name = NULL;
ret = privilege_db_manager_get_privacy_by_privilege(privilege_name, &privacy_name);
if (ret == PRIVILEGE_DB_MANAGER_ERR_NONE && strstr(privacy_name, "N/A") == NULL && privilege_db_manager_is_user_settable(pkgid, privacy_name) == 1) {
sql = sqlite3_mprintf("insert or replace into privacy_package (uid, pkg_id, privacy_name, privilege_name, api_version, is_critical) values (%d, %Q, %Q, %Q, %Q, 1)", uid, pkgid, privacy_name, privilege_name, api_version);
- TryReturn(sql != NULL, sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL); g_list_free_full(mapped_privilege_list, free); free(privacy_name); __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, sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL); g_list_free_full(mapped_privilege_list, free); free(privacy_name); __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) {
- __get_db_error(&ret);
- sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL);
- g_list_free_full(mapped_privilege_list, free);
- free(privacy_name);
- __finalize_db(db, stmt, sql);
- return ret;
+
+ if (__prepare_stmt(db, sql, &stmt) != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
}
- sqlite3_finalize(stmt);
- stmt = NULL;
- sqlite3_free(sql);
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ _LOGE("sqlite3_step() failed. [%s]", sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
+ }
+
+ SAFE_SQLITE_FREE(sql);
+ SAFE_SQLITE_FINALIZE(stmt);
}
- if (privacy_name != NULL)
- free(privacy_name);
+ SAFE_FREE(privacy_name);
+ }
+ }
+ SAFE_G_LIST_FREE_FULL(mapped_privilege_list, free);
+ if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ _LOGE("DB update failed. Try ROLLBACK TRANSACTION.");
+ if (sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'ROLLBACK TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ }
+ } else {
+ if (sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'COMMIT TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
}
}
- g_list_free_full(mapped_privilege_list, free);
- TryReturn(sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, stmt, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for COMMIT TRANSACTION failed");
- __finalize_db(db, stmt, NULL);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ __finalize_db(db, stmt, sql);
+
+ return ret;
}
//TODO: Do insert only. DO NOT determine whether to insert or not in here.
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
+ char* sql = NULL;
+
+ int ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
for (l = mapped_privilege_list; l != NULL; l = l->next) {
char *privilege_name = (char *)l->data;
if (strstr(privilege_name, "/internal/") == NULL) {
- char* sql = NULL;
char * privacy_name = NULL;
ret = privilege_db_manager_get_privacy_by_privilege(privilege_name, &privacy_name);
if (ret == PRIVILEGE_DB_MANAGER_ERR_NONE && strstr(privacy_name, "N/A") == NULL && privilege_db_manager_is_user_settable(pkgid, privacy_name) == 1) {
sql = sqlite3_mprintf("insert or ignore into privacy_package (uid, pkg_id, privacy_name, privilege_name, api_version, is_critical) values (%d, %Q, %Q, %Q, %Q, 0)", uid, pkgid, privacy_name, privilege_name, api_version);
- TryReturn(sql != NULL, sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL); g_list_free_full(mapped_privilege_list, free); free(privacy_name); __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, sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL); g_list_free_full(mapped_privilege_list, free); free(privacy_name); __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) {
- __get_db_error(&ret);
- sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL);
- g_list_free_full(mapped_privilege_list, free);
- free(privacy_name);
- __finalize_db(db, stmt, sql);
- return ret;
+
+ if (__prepare_stmt(db, sql, &stmt) != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
}
- sqlite3_finalize(stmt);
- stmt = NULL;
- sqlite3_free(sql);
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ _LOGE("sqlite3_step() failed. [%s]", sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
+ break;
+ }
+
+ SAFE_SQLITE_FREE(sql);
+ SAFE_SQLITE_FINALIZE(stmt);
}
- if (privacy_name != NULL)
- free(privacy_name);
+ SAFE_FREE(privacy_name);
+ }
+ }
+ SAFE_G_LIST_FREE_FULL(mapped_privilege_list, free);
+ if (ret != PRIVILEGE_DB_MANAGER_ERR_NONE) {
+ _LOGE("DB update failed. Try ROLLBACK TRANSACTION.");
+ if (sqlite3_exec(db, "ROLLBACK TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'ROLLBACK TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ }
+ } else {
+ if (sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) != SQLITE_OK) {
+ _LOGE("[DB_FAIL] sqlite3_exec for 'COMMIT TRANSACTION' failed. ret %d[%s]", sqlite3_errcode(db), sqlite3_errmsg(db));
+ ret = PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL;
}
}
- g_list_free_full(mapped_privilege_list, free);
- TryReturn(sqlite3_exec(db, "COMMIT TRANSACTION", NULL, NULL, NULL) == SQLITE_OK, __finalize_db(db, stmt, NULL), PRIVILEGE_DB_MANAGER_ERR_DB_UPDATE_FAIL, "[DB_FAIL] sqlite3_exec for COMMIT TRANSACTION failed");
- __finalize_db(db, stmt, NULL);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
+ __finalize_db(db, stmt, sql);
+
+ return ret;
}
int privilege_db_manager_unset_package_privilege_info(const uid_t uid, const char* pkgid)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RW, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
- ret = sqlite3_step(stmt);
+ int ret = sqlite3_step(stmt);
if (ret != SQLITE_DONE)
__get_db_error(&ret);
else
ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
__finalize_db(db, stmt, sql);
+
return ret;
}
*is_privacy_requestable = true;
else
*is_privacy_requestable = false;
+ ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
} else if (ret == SQLITE_DONE) {
- _LOGD("no result!!!!");
- __finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
+ ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
} else {
- _LOGE("ret = %d, %s", ret, sqlite3_errmsg(db));
- __finalize_db(db, stmt, sql);
- return ret;
+ _LOGE("sqlite3_step() failed. et %d[%s]", ret, sqlite3_errmsg(db));
+ //TODO: add error value for internal error
}
__finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
-
-
+ return ret;
}
+
int privilege_db_manager_is_critical_privilege(const uid_t uid, const char* pkgid, const char* privilege, bool* is_critical)
{
sqlite3 *db = NULL;
*is_critical = true;
else
*is_critical = false;
+ ret = PRIVILEGE_DB_MANAGER_ERR_NONE;
} else if (ret == SQLITE_DONE) {
- __finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
+ ret = PRIVILEGE_DB_MANAGER_ERR_NO_EXIST_RESULT;
} else {
- _LOGE("ret = %d, %s", ret, sqlite3_errmsg(db));
- __finalize_db(db, stmt, sql);
- return ret;
+ _LOGE("ret = %d[%s]", ret, sqlite3_errmsg(db));
+ //TODO: add error value for internal error
}
__finalize_db(db, stmt, sql);
- return PRIVILEGE_DB_MANAGER_ERR_NONE;
-
+ return ret;
}
int privilege_db_manager_get_all_privacy_package_list(const uid_t uid, GList** package_list)
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- 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);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_package_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *pkgid = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_package_list = g_list_append(temp_package_list, pkgid);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *pkgid = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_package_list = g_list_append(temp_package_list, pkgid);
+ }
__finalize_db(db, stmt, sql);
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privacy_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privacy_name = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_privacy_list = g_list_append(temp_privacy_list, privacy_name);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privacy_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privacy_list = g_list_append(temp_privacy_list, privacy_name);
+ }
__finalize_db(db, stmt, sql);
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- 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);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_package_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *pkgid = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_package_list = g_list_append(temp_package_list, pkgid);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *pkgid = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_package_list = g_list_append(temp_package_list, pkgid);
+ }
__finalize_db(db, stmt, sql);
{
sqlite3 *db = NULL;
sqlite3_stmt *stmt = NULL;
- int ret;
TRY_INIT_DB(PRIVILEGE_DB_TYPE_PRIVACY_RO, &db);
TRY_PREPARE_STMT(db, sql, &stmt);
GList* temp_privilege_list = NULL;
- do {
- ret = sqlite3_step(stmt);
- if (ret == SQLITE_ROW) {
- char *privilege_name = strdup((char *)sqlite3_column_text(stmt, 0));
- temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
- }
- } while (ret == SQLITE_ROW);
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ char *privilege_name = g_strdup((char *)sqlite3_column_text(stmt, 0));
+ temp_privilege_list = g_list_append(temp_privilege_list, privilege_name);
+ }
__finalize_db(db, stmt, sql);