}
+int rdb_get_app_paths(const char *const s_app_label_name,
+ const char *const s_app_path_type_name,
+ char ***ppp_paths)
+{
+ RDB_LOG_ENTRY_PARAM("%s %s", s_app_label_name, s_app_path_type_name);
+
+ int ret;
+ int i_num_paths;
+ sqlite3 *p_db = NULL;
+
+ ret = rdb_begin(&p_db, RDB_TRANSACTION_SHARED_READ);
+ if (ret != PC_OPERATION_SUCCESS) goto finish;
+
+ ret = get_app_paths_count_internal(p_db,
+ s_app_label_name,
+ s_app_path_type_name,
+ &i_num_paths);
+ if (ret != PC_OPERATION_SUCCESS) goto finish;
+
+ ret = get_app_paths_internal(p_db, s_app_label_name,
+ s_app_path_type_name,
+ i_num_paths,
+ ppp_paths);
+
+finish:
+ return rdb_finish(p_db, ret);
+}
+
+
int rdb_add_permission_rules(const char *const s_permission_name,
const char *const s_permission_type_name,
const char *const *const pp_smack_rules)
ret = rdb_begin(&p_db, RDB_TRANSACTION_EXCLUSIVE);
if(ret != PC_OPERATION_SUCCESS) goto finish;
- ret = add_additional_rules_internal(p_db,
- pp_smack_rules);
+ // Old rules may disappear, so mark as modified
+ ret = add_modified_additional_rules_internal(p_db);
+ if(ret != PC_OPERATION_SUCCESS) goto finish;
+
+ ret = add_additional_rules_internal(p_db, pp_smack_rules);
+ if(ret != PC_OPERATION_SUCCESS) goto finish;
+
+ // New rules appear, so also mark as modified
+ ret = add_modified_additional_rules_internal(p_db);
finish:
return rdb_finish(p_db, ret);
finish:
return rdb_finish(p_db, ret);
}
+
+int rdb_app_get_permissions(const char *const s_app_label_name,
+ const char *const s_permission_type_name,
+ char ***ppp_perm_list)
+{
+ RDB_LOG_ENTRY_PARAM("%s %s", s_app_label_name, s_permission_type_name);
+
+ int ret = PC_ERR_DB_OPERATION;
+ int i_num_permissions;
+ sqlite3 *p_db = NULL;
+
+ ret = rdb_begin(&p_db, RDB_TRANSACTION_SHARED_READ);
+ if(ret != PC_OPERATION_SUCCESS) goto finish;
+
+ ret = get_app_permissions_number_internal(p_db,
+ s_app_label_name,
+ s_permission_type_name,
+ &i_num_permissions);
+ if (ret != PC_OPERATION_SUCCESS) goto finish;
+
+ ret = get_app_permissions_internal(p_db,
+ s_app_label_name,
+ s_permission_type_name,
+ i_num_permissions,
+ ppp_perm_list);
+
+finish:
+ return rdb_finish(p_db, ret);
+}