Note that vector functions are not thread-safe.
Jason Tang jtang@tresys.com
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Definition in file vector.h.
#include <stdlib.h>
#include <qpol/iterator.h>
Go to the source code of this file.
Typedefs | |
| typedef apol_vector | apol_vector_t |
| typedef int( | apol_vector_comp_func )(const void *a, const void *b, void *data) |
| typedef void( | apol_vector_free_func )(void *elem) |
| typedef void *( | apol_vector_dup_func )(const void *elem, void *data) |
Functions | |
| apol_vector_t * | apol_vector_create (apol_vector_free_func *fr) |
| Allocate and initialize an empty vector with default capacity. | |
| apol_vector_t * | apol_vector_create_with_capacity (size_t cap, apol_vector_free_func *fr) |
| Allocate and initialize an empty vector with starting capacity of cap. | |
| apol_vector_t * | apol_vector_create_from_iter (qpol_iterator_t *iter, apol_vector_free_func *fr) |
| Allocate and return a vector that has been initialized with the contents of a qpol iterator. | |
| apol_vector_t * | apol_vector_create_from_vector (const apol_vector_t *v, apol_vector_dup_func *dup, void *data, apol_vector_free_func *fr) |
| Allocate and return a vector that has been initialized with the contents of another vector. | |
| apol_vector_t * | apol_vector_create_from_intersection (const apol_vector_t *v1, const apol_vector_t *v2, apol_vector_comp_func *cmp, void *data) |
| Allocate and return a vector that has been initialized with the contents common to two other vectors. | |
| void | apol_vector_destroy (apol_vector_t **v) |
| Free a vector and any memory used by it. | |
| size_t | apol_vector_get_size (const apol_vector_t *v) |
| Get the number of elements in the vector. | |
| size_t | apol_vector_get_capacity (const apol_vector_t *v) |
| Get the current capacity of the vector. | |
| void * | apol_vector_get_element (const apol_vector_t *v, size_t idx) |
| Get the element at the requested index. | |
| int | apol_vector_get_index (const apol_vector_t *v, const void *elem, apol_vector_comp_func *cmp, void *data, size_t *i) |
| Find an element within a vector, returning its index within the vector. | |
| int | apol_vector_append (apol_vector_t *v, void *elem) |
| Add an element to the end of a vector. | |
| int | apol_vector_append_unique (apol_vector_t *v, void *elem, apol_vector_comp_func *cmp, void *data) |
| Add an element to the end of a vector unless that element is equal to an existing element. | |
| int | apol_vector_cat (apol_vector_t *dest, const apol_vector_t *src) |
| Concatenate two vectors. | |
| int | apol_vector_remove (apol_vector_t *v, const size_t idx) |
| Remove an element from a vector, and renumber all subsequent elements. | |
| int | apol_vector_compare (const apol_vector_t *a, const apol_vector_t *b, apol_vector_comp_func *cmp, void *data, size_t *i) |
| Compare two vectors, determining if one is different than the other. | |
| void | apol_vector_sort (apol_vector_t *v, apol_vector_comp_func *cmp, void *data) |
| Sort the vector's elements within place, using an unstable sorting algorithm. | |
| void | apol_vector_sort_uniquify (apol_vector_t *v, apol_vector_comp_func *cmp, void *data) |
| Sort the vector's elements within place (see apol_vector_sort()), and then compact vector by removing duplicate entries. | |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
Allocate and initialize an empty vector with starting capacity of cap.
Definition at line 54 of file vector.c. References apol_vector_t, apol_vector::array, apol_vector::capacity, and apol_vector::fr. Referenced by apol_bst_get_vector(), apol_infoflow_graph_create_nodes(), apol_infoflow_trans_define(), apol_infoflow_trans_further_shuffle(), apol_mls_level_convert(), apol_permmap_create_from_policy(), apol_vector_create(), apol_vector_create_from_iter(), apol_vector_create_from_vector(), avc_message_create(), avrule_get_items(), avrule_new_diff(), filter_string_vector_read(), infoflow_result_create_from_infoflow_result(), level_create_from_apol_mls_level(), make_common_diff(), make_diff(), make_ra_diff(), model_sort(), poldiff_type_remap_create(), poldiff_type_remap_entry_create(), range_create(), relabel_analysis_get_type_vector(), report_enforce_toggle_filter_create(), role_allow_get_items(), seaudit_model_clear_sorts(), seaudit_model_create(), sefs_fcfile::sefs_fcfile(), terule_get_items(), and type_map_build(). 00055 {
00056 apol_vector_t *v = NULL;
00057 int error;
00058
00059 if (cap < 1) {
00060 cap = 1;
00061 }
00062 v = calloc(1, sizeof(apol_vector_t));
00063 if (!v)
00064 return NULL;
00065 v->array = calloc((v->capacity = cap), sizeof(void *));
00066 if (!(v->array)) {
00067 error = errno;
00068 free(v);
00069 errno = error;
00070 return NULL;
00071 }
00072 v->fr = fr;
00073 return v;
00074 }
|
|
||||||||||||
|
Allocate and return a vector that has been initialized with the contents of a qpol iterator. This function merely makes a shallow copy of the iterator's contents; any memory ownership restrictions imposed by the iterator apply to this vector as well. Also note that this function begins copying from the iterator's current position, leaving the iterator at its end position afterwards.
Definition at line 76 of file vector.c. References apol_vector_append(), apol_vector_create_with_capacity(), apol_vector_t, qpol_iterator_end(), qpol_iterator_get_item(), qpol_iterator_get_size(), qpol_iterator_next(), and qpol_iterator_t. Referenced by apol_mls_level_validate(), apol_mls_range_get_levels(), apol_types_relation_common_attribs(), bool_get_items(), cat_get_items(), class_get_items(), common_get_items(), level_get_items(), role_allow_get_items(), role_get_items(), spurious_audit_run(), type_map_prim_aliases_comp(), and user_get_items(). 00077 {
00078 size_t iter_size;
00079 apol_vector_t *v;
00080 void *item;
00081 int error;
00082 if (qpol_iterator_get_size(iter, &iter_size) < 0 || (v = apol_vector_create_with_capacity(iter_size, fr)) == NULL) {
00083 return NULL;
00084 }
00085 for (; !qpol_iterator_end(iter); qpol_iterator_next(iter)) {
00086 if (qpol_iterator_get_item(iter, &item)) {
00087 error = errno;
00088 free(v);
00089 errno = error;
00090 return NULL;
00091 }
00092 apol_vector_append(v, item);
00093 }
00094 return v;
00095 }
|
|
||||||||||||||||||||
|
Allocate and return a vector that has been initialized with the contents of another vector.
Definition at line 97 of file vector.c. References apol_vector_create_with_capacity(), apol_vector_t, apol_vector::array, apol_vector::capacity, and apol_vector::size. Referenced by apol_domain_trans_result_create_from_domain_trans_result(), apol_infoflow_trans_define(), apol_mls_level_create_from_mls_level(), apol_mls_level_render(), apol_policy_path_create(), apol_syn_avrule_get_by_query(), apol_types_relation_access_append(), filter_set_vector(), filter_view_init_context(), infoflow_result_create_from_infoflow_result(), level_create_from_apol_mls_level(), level_deep_diff(), level_deep_diff_apol_mls_levels(), level_new_diff(), poldiff_type_remap_entry_get_modified_types(), poldiff_type_remap_entry_get_original_types(), policy_components_view_init_lists(), policy_components_view_run(), print_rule_diffs(), range_create(), seaudit_filter_create_from_filter(), seaudit_model_create_from_model(), seaudit_model_get_malformed_messages(), seaudit_model_get_messages(), shallow_copy_str_vec_and_sort(), and user_new_diff(). 00099 {
00100 apol_vector_t *new_v;
00101 size_t i;
00102 if (v == NULL) {
00103 errno = EINVAL;
00104 return NULL;
00105 }
00106 if ((new_v = apol_vector_create_with_capacity(v->capacity, fr)) == NULL) {
00107 return NULL;
00108 }
00109 if (dup == NULL) {
00110 memcpy(new_v->array, v->array, v->size * sizeof(void *));
00111 } else {
00112 for (i = 0; i < v->size; i++) {
00113 new_v->array[i] = dup(v->array[i], data);
00114 }
00115 }
00116 new_v->size = v->size;
00117 return new_v;
00118 }
|
|
||||||||||||||||||||
|
Allocate and return a vector that has been initialized with the contents common to two other vectors. This function merely makes a shallow copy of the vectors' contents; any memory ownership restrictions imposed by the original vectors apply to this new vector as well. Note that if a source vector contains duplicate elements the returned vector may (or may not) have duplicates as well. If the caller does not want duplicate entries then apol_vector_sort_uniquify() should be called afterwards.
Definition at line 120 of file vector.c. References apol_vector_append(), apol_vector_create(), apol_vector_destroy(), apol_vector_t, apol_vector::array, and apol_vector::size. Referenced by apol_types_relation_common_attribs(), apol_types_relation_common_roles(), components_types_tests(), imp_range_trans_run(), inc_dom_trans_run(), run_test(), spurious_audit_run(), and unreachable_doms_run(). 00122 {
00123 apol_vector_t *new_v;
00124 size_t i, j;
00125 if (v1 == NULL || v2 == NULL) {
00126 errno = EINVAL;
00127 return NULL;
00128 }
00129 if ((new_v = apol_vector_create(NULL)) == NULL) {
00130 return NULL;
00131 }
00132 for (i = 0; i < v1->size; i++) {
00133 for (j = 0; j < v2->size; j++) {
00134 if ((cmp != NULL && cmp(v1->array[i], v2->array[j], data) == 0) ||
00135 (cmp == NULL && v1->array[i] == v2->array[j])) {
00136 if (apol_vector_append(new_v, v1->array[i]) < 0) {
00137 apol_vector_destroy(&new_v);
00138 return NULL;
00139 }
00140 break;
00141 }
00142 }
00143 }
00144 return new_v;
00145 }
|
|
|
Free a vector and any memory used by it. This will recursively invoke the free function that was stored within the vector when it was created.
Definition at line 147 of file vector.c. References apol_vector_t, apol_vector::array, and apol_vector::fr. Referenced by apol_attr_get_by_query(), apol_avrule_get_by_query(), apol_avrule_list_to_syn_avrules(), apol_avrule_query_append_class(), apol_avrule_query_append_perm(), apol_avrule_query_destroy(), apol_avrule_to_syn_avrules(), apol_bool_get_by_query(), apol_bst_get_vector(), apol_cat_get_by_query(), apol_class_get_by_query(), apol_common_get_by_query(), apol_cond_get_by_query(), apol_constraint_get_by_query(), apol_context_validate_partial(), apol_domain_trans_analysis_append_access_type(), apol_domain_trans_analysis_append_class(), apol_domain_trans_analysis_append_perm(), apol_domain_trans_analysis_destroy(), apol_domain_trans_analysis_do(), apol_domain_trans_table_verify_trans(), apol_fs_use_get_by_query(), apol_genfscon_get_by_query(), apol_infoflow_analysis_append_class_perm(), apol_infoflow_analysis_append_intermediate(), apol_infoflow_analysis_destroy(), apol_infoflow_analysis_direct(), apol_infoflow_analysis_do_more(), apol_infoflow_analysis_trans(), apol_infoflow_analysis_trans_expand(), apol_infoflow_analysis_trans_further(), apol_infoflow_analysis_trans_further_prepare(), apol_infoflow_edge_free(), apol_infoflow_graph_connect_nodes(), apol_infoflow_graph_create_nodes(), apol_infoflow_graph_create_required_types(), apol_infoflow_graph_destroy(), apol_infoflow_graph_get_nodes_for_type(), apol_infoflow_node_free(), apol_infoflow_step_free(), apol_infoflow_trans_further_shuffle(), apol_infoflow_trans_path(), apol_isid_get_by_query(), apol_level_get_by_query(), apol_mls_level_convert(), apol_mls_level_render(), apol_mls_level_validate(), apol_mls_range_get_levels(), apol_netifcon_get_by_query(), apol_nodecon_get_by_query(), apol_obj_perm_append_perm(), apol_obj_perm_free(), apol_perm_get_by_query(), apol_policy_build_domain_trans_table(), apol_policy_path_create_from_file(), apol_policy_path_create_from_string(), apol_policy_path_destroy(), apol_portcon_get_by_query(), apol_query_create_candidate_class_list(), apol_query_create_candidate_role_list(), apol_query_create_candidate_syn_type_list(), apol_query_create_candidate_type_list(), apol_query_expand_type(), apol_range_trans_get_by_query(), apol_range_trans_query_append_class(), apol_range_trans_query_destroy(), apol_relabel_analysis_append_class(), apol_relabel_analysis_append_subject(), apol_relabel_analysis_destroy(), apol_relabel_analysis_do(), apol_role_allow_get_by_query(), apol_role_get_by_query(), apol_role_trans_get_by_query(), apol_str_split(), apol_syn_avrule_get_by_query(), apol_syn_terule_get_by_query(), apol_terule_get_by_query(), apol_terule_query_append_class(), apol_terule_query_destroy(), apol_terule_to_syn_terules(), apol_type_get_by_query(), apol_types_relation_access_append_rule(), apol_types_relation_access_free(), apol_types_relation_accesses(), apol_types_relation_allows(), apol_types_relation_clone_domaintrans(), apol_types_relation_clone_infoflow(), apol_types_relation_common_attribs(), apol_types_relation_common_roles(), apol_types_relation_common_users(), apol_types_relation_create_access_pools(), apol_types_relation_directflow(), apol_types_relation_domain(), apol_types_relation_result_destroy(), apol_types_relation_transflow(), apol_types_relation_types(), apol_user_get_by_query(), apol_validatetrans_get_by_query(), apol_vector_create_from_intersection(), append_avrule_to_subject_vector(), append_avrules_to_object_vector(), attrib_deep_diff(), attrib_free(), attrib_get_types(), attrib_summary_destroy(), attribs_wo_rules_run(), attribs_wo_types_run(), avc_message_free(), avrule_basic_syn(), avrule_deep_diff(), avrule_default(), avrule_destroy(), avrule_get_items(), avrule_get_line_numbers_for_perm(), bool_destroy(), bool_message_free(), build_avrule_vecs(), build_rangetrans_vecs(), build_roletrans_vecs(), build_terule_vecs(), sefs_filesystem::buildDevMap(), cat_destroy(), class_deep_diff(), class_destroy(), class_free(), class_get_perms(), cleanup_test(), common_deep_diff(), common_destroy(), common_free(), common_get_perms(), components_types_tests(), dom_node_create(), dom_node_free(), domain_trans_result_free(), domain_trans_table_find_orphan_type_transitions(), domain_trans_table_get_all_forward_trans(), domain_trans_table_get_all_reverse_trans(), domains_wo_roles_run(), dta_forward(), dta_forward_access(), dta_forward_multi_end(), dta_invalid(), dta_reflexive(), dta_reverse(), dta_reverse_regexp(), exists_common_user(), fcfile_open(), fcfile_query(), filter_set_vector(), filter_view_destroy_context_vectors(), filter_view_get_policy_classes(), filter_view_get_policy_roles(), filter_view_get_policy_types(), filter_view_get_policy_users(), filter_view_on_class_context_click(), filter_view_on_entry_focus_out(), filter_view_on_srole_context_click(), filter_view_on_stype_context_click(), filter_view_on_suser_context_click(), filter_view_on_trole_context_click(), filter_view_on_ttype_context_click(), filter_view_on_tuser_context_click(), filters_simple(), find_avrules_in_node(), find_domains_data_free(), find_domains_init(), find_domains_run(), find_file_types_data_free(), find_file_types_init(), find_file_types_run(), find_net_domains_data_free(), find_net_domains_run(), find_netif_types_run(), find_node_types_run(), find_port_types_run(), find_terules_in_node(), get_rule_modification_str(), get_tokens(), sefs_filesystem::getDevName(), imp_range_trans_run(), inc_dom_trans_run(), inc_mount_run(), inc_net_access_run(), infoflow_direct_overview(), infoflow_result_free(), infoflow_trans_overview(), level_deep_diff(), level_deep_diff_apol_mls_levels(), level_deep_diff_cats(), level_destroy(), level_free(), level_get_cats(), level_new_diff(), main(), message_view_destroy(), message_view_dialog_response(), message_view_entire_message(), message_view_export_selected_messages(), message_view_messages_vector(), message_view_update_rows(), mls_level_free(), model_refresh(), model_sort(), modify_view_on_import_click(), net_state_destroy(), nomls_tests(), open_policy_build_path(), open_policy_on_add_click(), open_policy_on_base_browse_click(), open_policy_on_import_click(), perform_av_query(), perform_ra_query(), perform_range_query(), perform_rt_query(), perform_te_query(), permmap_class_free(), permmap_destroy(), poldiff_avrule_free(), poldiff_build_bsts(), poldiff_do_item_diff(), poldiff_terule_free(), poldiff_type_remap_flush(), policy_21_range_trans_all(), policy_21_range_trans_either(), policy_21_range_trans_lnk_file(), policy_21_range_trans_process(), policy_21_range_trans_socket(), policy_components_view_run(), policy_view_destroy(), policy_view_on_find_terules_click(), policy_view_populate_combo_boxes(), policy_view_stats_update(), preferences_create(), preferences_destroy(), preferences_parse_old_recent_files(), preferences_view_on_browse_click(), preferences_write_to_conf_file(), print_attribs(), print_cat_sens(), print_cats(), print_fsuse(), print_genfscon(), print_isids(), print_nodecon(), print_rule_diffs(), print_sens(), print_stats(), print_types(), query_create_candidate_type(), range_create(), range_deep_diff(), range_destroy(), range_trans_destroy(), range_trans_get_items(), relabel_analysis_get_type_vector(), relabel_analysis_matchup(), relabel_analysis_object(), relabel_analysis_subject(), relabel_result_free(), remap_types_highlight_entries(), remap_types_on_add_click(), remap_types_update(), remap_types_update_view(), report_enforce_toggle_filter_create(), report_print_avc_listing(), report_print_enforce_toggles(), report_print_loaded_view(), report_print_malformed(), report_print_policy_booleans(), report_print_policy_loads(), report_print_stats(), report_window_browse(), result_item_avrule_print_diff(), result_item_avrule_sort(), result_item_multi_destructor(), result_item_terule_print_diff(), result_item_terule_sort(), role_allow_destroy(), role_allow_free(), role_allow_free_item(), role_allow_get_items(), role_basic(), role_deep_diff(), role_destroy(), role_free(), role_get_types(), role_regex(), role_trans_destroy(), role_trans_get_items(), roles_wo_allow_run(), roles_wo_types_run(), roles_wo_users_run(), run_test(), sefs_fclist::runQuery(), sefs_db::runQueryMap(), sefs_fcfile::runQueryMap(), sefs_filesystem::runQueryMap(), seaudit_filter_create_from_file(), seaudit_filter_destroy(), seaudit_log_clear(), seaudit_log_destroy(), seaudit_log_parse_line(), seaudit_model_clear_sorts(), seaudit_model_create_from_file(), seaudit_model_destroy(), seaudit_parse_command_line(), seaudit_set_log(), sechk_item_free(), sechk_lib_destroy(), sechk_lib_module_clear_option(), sechk_module_free(), sechk_module_new(), sechk_result_destroy(), sediffx_parse_command_line(), sefs_fcfile::sefs_fcfile(), spurious_audit_run(), table_add_avrule(), table_add_terule(), terule_basic_syn(), terule_destroy(), terule_get_items(), toplevel_destroy(), toplevel_on_open_log_activate(), toplevel_on_open_view_activate(), type_deep_diff(), type_destroy(), type_get_attrib_names(), type_map_build(), type_map_destroy(), type_map_infer(), type_map_prim_aliases_comp(), type_map_vector_free(), type_remap_entry_free(), type_remap_vector_dump(), type_summary_destroy(), types_wo_allow_run(), unreachable_doms_data_free(), unreachable_doms_run(), user_basic(), user_deep_diff_roles(), user_destroy(), user_free(), user_get_roles(), user_new_diff(), user_regex(), users_wo_roles_run(), and sefs_fcfile::~sefs_fcfile(). 00148 {
00149 size_t i = 0;
00150
00151 if (!v || !(*v))
00152 return;
00153
00154 if ((*v)->fr) {
00155 for (i = 0; i < (*v)->size; i++) {
00156 (*v)->fr((*v)->array[i]);
00157 }
00158 }
00159 free((*v)->array);
00160 (*v)->array = NULL;
00161 free(*v);
00162 *v = NULL;
00163 }
|
|
|
Get the number of elements in the vector.
Definition at line 165 of file vector.c. References apol_vector_t, and apol_vector::size. Referenced by apol_avrule_get_by_query(), apol_avrule_list_to_syn_avrules(), apol_avrule_to_syn_avrules(), apol_context_validate_partial(), apol_domain_trans_analysis_do(), apol_domain_trans_table_verify_trans(), apol_infoflow_analysis_direct(), apol_infoflow_analysis_trans(), apol_infoflow_analysis_trans_further(), apol_infoflow_analysis_trans_further_next(), apol_infoflow_analysis_trans_shortest_path(), apol_infoflow_direct_define(), apol_infoflow_direct_get_result(), apol_infoflow_graph_check_class_perms(), apol_infoflow_graph_connect_nodes(), apol_infoflow_graph_create_required_types(), apol_infoflow_graph_get_nodes_for_type(), apol_infoflow_graph_trans_further_init(), apol_infoflow_graph_trans_init(), apol_infoflow_results_check_both(), apol_infoflow_trans_append(), apol_infoflow_trans_define(), apol_infoflow_trans_find_edge(), apol_infoflow_trans_further_shuffle(), apol_infoflow_trans_path(), apol_mls_level_compare(), apol_mls_level_render(), apol_mls_level_validate(), apol_mls_range_get_levels(), apol_policy_build_domain_trans_table(), apol_policy_create_from_policy_path(), apol_policy_path_create_from_file(), apol_policy_path_create_from_string(), apol_policy_path_to_file(), apol_policy_path_to_string(), apol_policy_save_permmap(), apol_query_create_candidate_class_list(), apol_query_create_candidate_syn_type_list(), apol_query_create_candidate_type_list(), apol_query_type_set_uses_types_directly(), apol_range_trans_get_by_query(), apol_str_join(), apol_syn_avrule_get_by_query(), apol_syn_terule_get_by_query(), apol_terule_get_by_query(), apol_terule_list_to_syn_terules(), apol_types_relation_access_append_rule(), apol_types_relation_accesses(), apol_types_relation_clone_domaintrans(), apol_types_relation_clone_infoflow(), apol_types_relation_create_access_pools(), apol_types_relation_types(), apol_vector_cat(), apol_vector_compare(), append_avrule_to_subject_vector(), append_avrules_to_object_vector(), sefs_fcfile::appendFile(), sefs_fcfile::appendFileList(), are_all_classes_mapped(), are_all_perms_mapped(), attrib_deep_diff(), attribs_wo_rules_print(), attribs_wo_rules_run(), attribs_wo_types_print(), attribs_wo_types_run(), avc_message_to_string(), avc_message_to_string_html(), avc_msg_insert_additional_field_data(), avc_msg_insert_perms(), avc_parse(), avrule_basic_syn(), avrule_deep_diff(), avrule_default(), avrule_enable_line_numbers(), avrule_get_items(), avrule_new_diff(), bool_message_to_misc_string(), bool_message_to_string(), bool_message_to_string_html(), bool_parse(), build_avrule_vecs(), build_category_vecs(), build_component_vecs(), build_level_vecs(), build_nomls_vecs(), build_rangetrans_vecs(), build_roleallow_vecs(), build_roletrans_vecs(), build_terule_vecs(), build_user_vecs(), class_deep_diff(), common_deep_diff(), components_types_tests(), domain_and_file_print(), domain_and_file_run(), domain_trans_table_find_orphan_type_transitions(), domain_trans_table_get_all_forward_trans(), domain_trans_table_get_all_reverse_trans(), domains_wo_roles_print(), domains_wo_roles_run(), dta_forward(), dta_forward_access(), dta_forward_multi_end(), dta_invalid(), dta_reflexive(), dta_reverse(), dta_reverse_regexp(), exists_common_user(), fcfile_open(), fcfile_query(), filter_perm_accept(), filter_perm_support(), filter_string_vector_print(), filter_view_context_item_to_entry(), filter_view_get_policy_classes(), filter_view_get_policy_roles(), filter_view_get_policy_types(), filter_view_get_policy_users(), filters_simple(), find_assoc_types_print(), find_domains_init(), find_domains_print(), find_domains_run(), find_file_types_init(), find_file_types_print(), find_file_types_run(), find_net_domains_init(), find_net_domains_print(), find_net_domains_run(), find_netif_types_print(), find_netif_types_run(), find_node_types_print(), find_node_types_run(), find_permmap_class(), find_permmap_perm(), find_port_types_print(), find_port_types_run(), find_result(), generate_common_only_proof_text(), generate_tcp_proof_text(), generate_udp_recv_proof_text(), generate_udp_send_proof_text(), get_rule_modification_str(), imp_range_trans_print(), imp_range_trans_run(), inc_dom_trans_print(), inc_dom_trans_run(), inc_mount_print(), inc_mount_run(), inc_net_access_print(), inc_net_access_run(), infoflow_direct_overview(), infoflow_result_create_from_infoflow_result(), infoflow_trans_overview(), insert_hostname(), insert_time(), level_deep_diff_cats(), level_to_string(), load_parse(), load_policy_msg_is_old_load_policy_string(), main(), message_comp(), message_view_clear(), message_view_dialog_response(), message_view_export_messages_vector(), message_view_get_num_log_messages(), message_view_store_get_iter(), message_view_store_get_value(), message_view_store_iter_children(), message_view_store_iter_n_children(), message_view_store_iter_next(), message_view_store_iter_nth_child(), message_view_update_rows(), model_filter_message(), model_recalc_stats(), model_refresh(), model_sort(), modified_mls_range_to_string(), modify_view_on_import_click(), modify_view_update_filter_store(), name_perm_vector_has_incomplete_perms(), open_policy_init_value(), open_policy_init_values(), open_policy_on_add_click(), perform_av_query(), perform_range_query(), perform_te_query(), poldiff_attrib_to_string(), poldiff_avrule_to_string(), poldiff_build_bsts(), poldiff_class_to_string(), poldiff_common_to_string(), poldiff_do_item_diff(), poldiff_level_to_string(), poldiff_level_to_string_brief(), poldiff_range_to_string_brief(), poldiff_role_allow_to_string(), poldiff_role_to_string(), poldiff_type_remap_create(), poldiff_type_to_string(), policy_21_range_trans_all(), policy_21_range_trans_either(), policy_21_range_trans_lnk_file(), policy_21_range_trans_process(), policy_21_range_trans_socket(), policy_components_view_init_lists(), policy_components_view_run(), policy_view_display_avrule_results(), policy_view_populate_combo_boxes(), policy_view_stats_update(), preferences_add_recent_policy(), preferences_create(), preferences_parse_old_recent_files(), preferences_write_to_conf_file(), prefs_add_recent_vector(), print_attribs(), print_av_results(), print_cat_sens(), print_cats(), print_fsuse(), print_genfscon(), print_isids(), print_nodecon(), print_ra_results(), print_range_results(), print_rt_results(), print_rule_section(), print_sens(), print_stats(), print_syn_av_results(), print_syn_te_results(), print_te_results(), print_test_failure(), print_types(), query_create_candidate_type(), range_create(), range_deep_diff(), range_trans_new_diff(), relabel_analysis_get_type_vector(), relabel_analysis_matchup(), relabel_analysis_object(), relabel_analysis_subject(), remap_types_highlight_entries(), remap_types_on_add_click(), remap_types_update(), remap_types_update_view(), report_print_avc_listing(), report_print_enforce_toggles(), report_print_loaded_view(), report_print_malformed(), report_print_policy_booleans(), report_print_policy_loads(), report_print_stats(), result_item_avrule_print_diff(), result_item_avrule_sort(), result_item_inline_link_event(), result_item_print_diff(), result_item_print_linenos(), result_item_print_modified_range(), result_item_print_rule_diff(), result_item_range_trans_get_buffer(), result_item_terule_print_diff(), result_item_terule_sort(), result_item_user_get_buffer(), result_item_user_print_modified(), role_allow_deep_diff(), role_allow_get_items(), role_basic(), role_deep_diff(), role_regex(), roleallow_to_string(), roles_wo_allow_print(), roles_wo_allow_run(), roles_wo_types_print(), roles_wo_types_run(), roles_wo_users_print(), roles_wo_users_run(), rule_select(), run_test(), sefs_fcfile::runQueryMap(), seaudit_log_clear(), seaudit_log_destroy(), seaudit_log_parse(), seaudit_log_parse_buffer(), seaudit_log_parse_line(), seaudit_model_create_from_model(), seaudit_model_destroy(), seaudit_model_save_to_file(), seaudit_set_log(), sechk_lib_check_module_dependencies(), sechk_lib_check_module_requirements(), sechk_lib_check_requirement(), sechk_lib_get_module(), sechk_lib_get_module_function(), sechk_lib_get_module_idx(), sechk_lib_get_module_result(), sechk_lib_init_modules(), sechk_lib_load_profile(), sechk_lib_module_clear_option(), sechk_lib_print_modules_report(), sechk_lib_register_modules(), sechk_lib_run_modules(), sechk_lib_set_outputformat(), sechk_print_list(), sefs_fcfile::sefs_fcfile(), sort_perm_support(), spurious_audit_print(), spurious_audit_run(), table_add_avrule(), table_add_terule(), terule_basic_syn(), terule_enable_line_numbers(), terule_get_items(), terule_new_diff(), toplevel_on_preferences_activate(), toplevel_on_tab_close(), toplevel_set_recent_logs_submenu(), toplevel_set_recent_policies_submenu(), type_deep_diff(), type_get_attrib_names(), type_get_name(), type_map_build(), type_map_dump(), type_map_get_name(), type_map_infer(), type_map_prim_aliases_comp(), type_remap_vector_dump(), types_wo_allow_print(), types_wo_allow_run(), unreachable_doms_print(), unreachable_doms_run(), user_basic(), user_deep_diff_roles(), user_regex(), user_to_modified_string(), users_wo_roles_print(), users_wo_roles_run(), util_policy_path_to_full_string(), util_policy_path_to_string(), vector_to_string(), xx_init(), xx_print(), and xx_run(). 00166 {
00167 if (!v) {
00168 errno = EINVAL;
00169 return 0;
00170 } else {
00171 return v->size;
00172 }
00173 }
|
|
|
Get the current capacity of the vector.
Definition at line 175 of file vector.c. References apol_vector_t, and apol_vector::capacity. 00176 {
00177 if (!v) {
00178 errno = EINVAL;
00179 return 0;
00180 } else {
00181 return v->capacity;
00182 }
00183 }
|
|
||||||||||||
|
Get the element at the requested index.
Definition at line 185 of file vector.c. References apol_vector_t, apol_vector::array, and apol_vector::size. Referenced by apol_avrule_list_to_syn_avrules(), apol_domain_trans_analysis_do(), apol_infoflow_analysis_append_class_perm(), apol_infoflow_analysis_direct(), apol_infoflow_analysis_trans(), apol_infoflow_analysis_trans_further(), apol_infoflow_analysis_trans_further_next(), apol_infoflow_analysis_trans_shortest_path(), apol_infoflow_direct_define(), apol_infoflow_direct_get_result(), apol_infoflow_graph_check_class_perms(), apol_infoflow_graph_connect_nodes(), apol_infoflow_graph_create_edge(), apol_infoflow_graph_create_required_types(), apol_infoflow_graph_get_nodes_for_type(), apol_infoflow_graph_trans_further_init(), apol_infoflow_graph_trans_init(), apol_infoflow_results_check_both(), apol_infoflow_trans_append(), apol_infoflow_trans_define(), apol_infoflow_trans_find_edge(), apol_infoflow_trans_further_shuffle(), apol_mls_level_compare(), apol_mls_level_render(), apol_mls_level_validate(), apol_mls_range_get_levels(), apol_policy_build_domain_trans_table(), apol_policy_create_from_policy_path(), apol_policy_path_create_from_file(), apol_policy_path_create_from_string(), apol_policy_path_to_file(), apol_policy_path_to_string(), apol_policy_save_permmap(), apol_query_create_candidate_class_list(), apol_query_create_candidate_syn_type_list(), apol_query_create_candidate_type_list(), apol_str_join(), apol_syn_avrule_get_by_query(), apol_syn_terule_get_by_query(), apol_terule_list_to_syn_terules(), apol_types_relation_access_append_rule(), apol_types_relation_accesses(), apol_types_relation_clone_domaintrans(), apol_types_relation_clone_infoflow(), apol_types_relation_create_access_pools(), apol_types_relation_types(), apol_vector_cat(), append_avrule_to_subject_vector(), append_avrules_to_object_vector(), sefs_fcfile::appendFile(), sefs_fcfile::appendFileList(), are_all_classes_mapped(), are_all_perms_mapped(), attrib_deep_diff(), attribs_wo_rules_print(), attribs_wo_rules_run(), attribs_wo_types_print(), attribs_wo_types_run(), avc_message_to_string(), avc_message_to_string_html(), avc_msg_insert_additional_field_data(), avc_msg_insert_perms(), avc_parse(), avrule_basic_syn(), avrule_enable_line_numbers(), avrule_get_items(), bool_message_to_misc_string(), bool_parse(), build_avrule_vecs(), build_category_vecs(), build_component_vecs(), build_level_vecs(), build_nomls_vecs(), build_rangetrans_vecs(), build_roleallow_vecs(), build_roletrans_vecs(), build_terule_vecs(), build_user_vecs(), class_deep_diff(), common_deep_diff(), components_types_tests(), domain_and_file_print(), domain_and_file_run(), domain_trans_table_find_orphan_type_transitions(), domain_trans_table_get_all_forward_trans(), domain_trans_table_get_all_reverse_trans(), domains_wo_roles_print(), domains_wo_roles_run(), dta_forward(), dta_forward_access(), dta_forward_multi_end(), dta_invalid(), dta_reflexive(), dta_reverse(), dta_reverse_regexp(), exists_common_user(), fcfile_open(), fcfile_query(), filesystem_ftw_handler(), filter_perm_accept(), filter_string_vector_print(), filter_view_context_item_to_entry(), filter_view_get_policy_classes(), filter_view_get_policy_roles(), filter_view_get_policy_types(), filter_view_get_policy_users(), find_assoc_types_print(), find_domains_init(), find_domains_print(), find_domains_run(), find_file_types_init(), find_file_types_print(), find_file_types_run(), find_net_domains_init(), find_net_domains_print(), find_net_domains_run(), find_netif_types_print(), find_netif_types_run(), find_node_types_print(), find_node_types_run(), find_permmap_class(), find_permmap_perm(), find_port_types_print(), find_port_types_run(), find_result(), generate_common_only_proof_text(), generate_tcp_proof_text(), generate_udp_recv_proof_text(), generate_udp_send_proof_text(), get_rule_modification_str(), sefs_filesystem::getDevName(), imp_range_trans_print(), imp_range_trans_run(), inc_dom_trans_print(), inc_dom_trans_run(), inc_mount_print(), inc_mount_run(), inc_net_access_print(), inc_net_access_run(), infoflow_result_create_from_infoflow_result(), insert_hostname(), insert_time(), level_deep_diff_cats(), level_to_string(), load_parse(), load_policy_msg_get_policy_components(), load_policy_msg_is_old_load_policy_string(), main(), message_comp(), message_view_clear(), message_view_dialog_response(), message_view_export_messages_vector(), message_view_store_get_iter(), message_view_store_get_value(), message_view_store_iter_children(), message_view_store_iter_next(), message_view_store_iter_nth_child(), message_view_update_rows(), model_filter_message(), model_recalc_stats(), model_refresh(), model_sort(), modified_mls_range_to_string(), modify_view_on_import_click(), modify_view_update_filter_store(), name_perm_vector_add_perm(), name_perm_vector_has_incomplete_perms(), open_policy_init_value(), open_policy_init_values(), open_policy_on_add_click(), open_policy_on_base_browse_click(), open_policy_on_import_click(), perform_av_query(), perform_range_query(), perform_te_query(), poldiff_attrib_to_string(), poldiff_avrule_to_string(), poldiff_build_bsts(), poldiff_class_to_string(), poldiff_common_to_string(), poldiff_do_item_diff(), poldiff_level_to_string(), poldiff_level_to_string_brief(), poldiff_range_to_string_brief(), poldiff_role_allow_to_string(), poldiff_role_to_string(), poldiff_type_remap_create(), poldiff_type_to_string(), policy_21_range_trans_either(), policy_21_range_trans_lnk_file(), policy_21_range_trans_process(), policy_components_view_init_lists(), policy_components_view_on_to_exc_click(), policy_view_display_avrule_results(), policy_view_populate_combo_boxes(), preferences_add_recent_policy(), preferences_create(), preferences_parse_old_recent_files(), preferences_view_on_browse_click(), preferences_write_to_conf_file(), prefs_add_recent_vector(), print_attribs(), print_av_results(), print_cat_sens(), print_cats(), print_fsuse(), print_genfscon(), print_isids(), print_nodecon(), print_ra_results(), print_range_results(), print_rt_results(), print_rule_section(), print_sens(), print_syn_av_results(), print_syn_te_results(), print_te_results(), print_test_failure(), query_create_candidate_type(), range_create(), range_deep_diff(), relabel_analysis_get_type_vector(), relabel_analysis_matchup(), relabel_analysis_object(), relabel_analysis_subject(), relabel_result_get_node(), remap_types_on_add_click(), remap_types_update(), remap_types_update_view(), report_print_avc_listing(), report_print_enforce_toggles(), report_print_loaded_view(), report_print_malformed(), report_print_policy_booleans(), report_print_policy_loads(), report_window_browse(), result_item_avrule_print_diff(), result_item_avrule_sort(), result_item_inline_link_event(), result_item_print_diff(), result_item_print_linenos(), result_item_print_modified_range(), result_item_print_rule_diff(), result_item_range_trans_get_buffer(), result_item_terule_print_diff(), result_item_terule_sort(), result_item_user_get_buffer(), result_item_user_print_modified(), role_allow_deep_diff(), role_allow_get_items(), role_basic(), role_deep_diff(), role_regex(), roleallow_to_string(), roles_wo_allow_print(), roles_wo_allow_run(), roles_wo_types_print(), roles_wo_types_run(), roles_wo_users_print(), roles_wo_users_run(), rule_select(), sefs_fcfile::runQueryMap(), seaudit_log_clear(), seaudit_log_destroy(), seaudit_log_parse(), seaudit_log_parse_buffer(), seaudit_log_parse_line(), seaudit_model_create_from_model(), seaudit_model_destroy(), seaudit_model_save_to_file(), seaudit_set_log(), sechk_lib_check_module_dependencies(), sechk_lib_check_module_requirements(), sechk_lib_get_module(), sechk_lib_get_module_function(), sechk_lib_get_module_idx(), sechk_lib_get_module_result(), sechk_lib_init_modules(), sechk_lib_load_profile(), sechk_lib_module_clear_option(), sechk_lib_print_modules_report(), sechk_lib_process_xml_node(), sechk_lib_run_modules(), sechk_lib_set_outputformat(), sechk_print_list(), spurious_audit_print(), spurious_audit_run(), table_add_avrule(), table_add_terule(), terule_basic_syn(), terule_enable_line_numbers(), terule_get_items(), toplevel_destroy_views(), toplevel_on_open_log_activate(), toplevel_on_open_view_activate(), toplevel_on_preferences_activate(), toplevel_set_recent_logs_submenu(), toplevel_set_recent_policies_submenu(), type_deep_diff(), type_get_attrib_names(), type_get_name(), type_map_build(), type_map_dump(), type_map_get_name(), type_map_infer(), type_map_lookup_reverse(), type_remap_vector_dump(), types_wo_allow_print(), types_wo_allow_run(), unreachable_doms_print(), unreachable_doms_run(), user_basic(), user_deep_diff_roles(), user_regex(), user_to_modified_string(), users_wo_roles_print(), users_wo_roles_run(), vector_to_string(), xx_init(), and xx_print(). 00186 {
00187 if (!v || !(v->array)) {
00188 errno = EINVAL;
00189 return NULL;
00190 }
00191
00192 if (idx >= v->size) {
00193 errno = ERANGE;
00194 return NULL;
00195 }
00196
00197 return v->array[idx];
00198 }
|
|
||||||||||||||||||||||||
|
Find an element within a vector, returning its index within the vector.
Definition at line 225 of file vector.c. References apol_vector_t, apol_vector::array, and apol_vector::size. Referenced by apol_avrule_list_to_syn_avrules(), apol_avrule_to_syn_avrules(), apol_infoflow_analysis_append_class_perm(), apol_infoflow_analysis_trans_further(), apol_infoflow_graph_check_class_perms(), apol_infoflow_graph_create_edge(), apol_infoflow_graph_get_nodes_for_type(), apol_mls_level_compare(), apol_mls_level_validate(), apol_mls_range_get_levels(), apol_query_type_set_uses_types_directly(), apol_range_trans_get_by_query(), apol_role_allow_get_by_query(), apol_role_trans_get_by_query(), apol_syn_terule_get_by_query(), apol_types_relation_access_append_rule(), apol_types_relation_clone_domaintrans(), apol_types_relation_clone_infoflow(), apol_types_relation_common_users(), apol_types_relation_types(), apol_vector_append_unique(), db_type_compare(), exists_common_user(), filesystem_ftw_handler(), filter_src_role_accept(), filter_src_type_accept(), filter_src_user_accept(), filter_tgt_class_accept(), filter_tgt_role_accept(), filter_tgt_type_accept(), filter_tgt_user_accept(), find_domains_run(), sefs_filesystem::getDevName(), in_def_ctx(), inc_dom_trans_run(), sefs_filesystem::isQueryMatch(), log_remove_model(), model_notify_filter_changed(), model_notify_log_changed(), model_remove_log(), name_perm_vector_add_perm(), poldiff_type_remap_entry_remove(), policy_components_view_init_lists(), policy_components_view_on_to_exc_click(), policy_view_find_terules(), preferences_add_recent_policy(), prefs_add_recent_vector(), relabel_analysis_compare_type_to_vector(), relabel_result_get_node(), remap_types_highlight_entries(), report_print_enforce_toggles(), rule_select(), sefs_fcfile::runQueryMap(), seaudit_model_remove_filter(), sechk_lib_module_clear_option(), spurious_audit_run(), toplevel_on_tab_close(), type_map_infer(), and unreachable_doms_run(). 00226 {
00227 if (!v || !i) {
00228 errno = EINVAL;
00229 return -1;
00230 }
00231
00232 for (*i = 0; *i < v->size; (*i)++) {
00233 if ((cmp != NULL && cmp(v->array[*i], elem, data) == 0) || (cmp == NULL && elem == v->array[*i])) {
00234 return 0;
00235 }
00236 }
00237 return -1;
00238 }
|
|
||||||||||||
|
Add an element to the end of a vector.
Definition at line 240 of file vector.c. References apol_vector_grow(), apol_vector_t, apol_vector::array, apol_vector::capacity, and apol_vector::size. Referenced by apol_attr_get_by_query(), apol_avrule_list_to_syn_avrules(), apol_avrule_query_append_class(), apol_avrule_query_append_perm(), apol_avrule_to_syn_avrules(), apol_bool_get_by_query(), apol_cat_get_by_query(), apol_class_get_by_query(), apol_common_get_by_query(), apol_cond_get_by_query(), apol_constraint_get_by_query(), apol_domain_trans_analysis_append_access_type(), apol_domain_trans_analysis_append_class(), apol_domain_trans_analysis_append_perm(), apol_domain_trans_analysis_do(), apol_fs_use_get_by_query(), apol_genfscon_get_by_query(), apol_infoflow_analysis_append_class_perm(), apol_infoflow_analysis_append_intermediate(), apol_infoflow_direct_define(), apol_infoflow_direct_get_result(), apol_infoflow_graph_connect_nodes(), apol_infoflow_graph_create_edge(), apol_infoflow_graph_create_nodes(), apol_infoflow_graph_get_nodes_for_type(), apol_infoflow_results_check_both(), apol_infoflow_trans_append(), apol_infoflow_trans_define(), apol_infoflow_trans_further_shuffle(), apol_infoflow_trans_path(), apol_isid_get_by_query(), apol_level_get_by_query(), apol_mls_level_append_cats(), apol_mls_range_get_levels(), apol_netifcon_get_by_query(), apol_nodecon_get_by_query(), apol_permmap_create_from_policy(), apol_policy_path_create_from_file(), apol_policy_path_create_from_string(), apol_portcon_get_by_query(), apol_query_append_type(), apol_query_create_candidate_class_list(), apol_query_create_candidate_role_list(), apol_query_expand_type(), apol_range_trans_get_by_query(), apol_range_trans_query_append_class(), apol_relabel_analysis_append_class(), apol_relabel_analysis_append_subject(), apol_role_allow_get_by_query(), apol_role_get_by_query(), apol_role_trans_get_by_query(), apol_str_split(), apol_terule_query_append_class(), apol_terule_to_syn_terules(), apol_type_get_by_query(), apol_types_relation_access_append(), apol_types_relation_access_append_rule(), apol_types_relation_clone_domaintrans(), apol_types_relation_clone_infoflow(), apol_types_relation_common_users(), apol_types_relation_types(), apol_user_get_by_query(), apol_validatetrans_get_by_query(), apol_vector_append_unique(), apol_vector_cat(), apol_vector_create_from_intersection(), apol_vector_create_from_iter(), append_avrule_to_subject_vector(), append_avrules_to_object_vector(), sefs_fcfile::appendFile(), attrib_deep_diff(), attrib_get_items(), attrib_get_types(), attrib_new_diff(), attribs_wo_rules_register(), attribs_wo_rules_run(), attribs_wo_types_register(), attribs_wo_types_run(), avc_msg_insert_perms(), avrule_deep_diff(), avrule_enable_line_numbers(), avrule_get_items(), avrule_get_line_numbers_for_perm(), avrule_new_diff(), bool_change_append(), bool_deep_diff(), bool_new_diff(), bst_node_to_vector(), build_avrule_vecs(), build_category_vecs(), build_component_vecs(), build_level_vecs(), build_nomls_vecs(), build_rangetrans_vecs(), build_roleallow_vecs(), build_roletrans_vecs(), build_terule_vecs(), build_user_vecs(), sefs_filesystem::buildDevMap(), cat_new_diff(), class_deep_diff(), class_get_perms(), class_new_diff(), common_deep_diff(), common_get_perms(), common_new_diff(), components_types_tests(), domain_and_file_register(), domain_and_file_run(), domain_trans_table_find_orphan_type_transitions(), domain_trans_table_get_all_forward_trans(), domain_trans_table_get_all_reverse_trans(), domains_wo_roles_register(), domains_wo_roles_run(), fcfile_open(), filter_parse_start_element(), filter_string_vector_read(), filter_view_get_policy_classes(), filter_view_get_policy_roles(), filter_view_get_policy_types(), filter_view_get_policy_users(), filter_view_on_entry_focus_out(), find_assoc_types_register(), find_assoc_types_run(), find_domains_init(), find_domains_register(), find_domains_run(), find_file_types_init(), find_file_types_register(), find_file_types_run(), find_net_domains_init(), find_net_domains_register(), find_net_domains_run(), find_netif_types_register(), find_netif_types_run(), find_node_types_register(), find_node_types_run(), find_port_types_register(), find_port_types_run(), get_tokens(), imp_range_trans_register(), imp_range_trans_run(), inc_dom_trans_register(), inc_dom_trans_run(), inc_mount_register(), inc_mount_run(), inc_net_access_register(), inc_net_access_run(), infoflow_result_create_from_infoflow_result(), level_deep_diff(), level_deep_diff_cats(), level_get_cats(), level_new_diff(), log_append_model(), main(), map_to_vector(), message_create(), message_view_entire_message(), message_view_export_selected_messages(), model_refresh(), model_sort(), name_perm_vector_add_perm(), node_list_map_fn(), open_policy_build_path(), parse_command_line_args(), parse_default_contexts(), sefs_fcfile::parse_line(), perform_av_query(), poldiff_type_remap_create(), poldiff_type_remap_entry_create(), policy_components_view_on_to_inc_click(), policy_view_populate_combo_boxes(), preferences_add_recent_policy(), preferences_parse_new_recent_files(), preferences_parse_old_recent_files(), preferences_write_to_conf_file(), prefs_add_recent_vector(), query_append_type(), range_create(), range_deep_diff(), range_trans_deep_diff(), range_trans_get_items(), range_trans_new_diff(), relabel_analysis_get_type_vector(), relabel_result_get_node(), remap_types_update_view(), report_enforce_toggle_filter_create(), result_item_avrule_sort(), result_item_terule_sort(), role_allow_deep_diff(), role_allow_new_diff(), role_deep_diff(), role_get_types(), role_new_diff(), role_trans_deep_diff(), role_trans_get_items(), role_trans_new_diff(), roles_wo_allow_register(), roles_wo_allow_run(), roles_wo_types_register(), roles_wo_types_run(), roles_wo_users_register(), roles_wo_users_run(), rule_select(), seaudit_log_parse_line(), seaudit_model_append_filter(), seaudit_model_append_log(), seaudit_model_append_sort(), seaudit_model_create(), seaudit_parse_command_line(), sechk_lib_module_clear_option(), sechk_lib_new(), sechk_lib_process_xml_node(), sediffx_parse_command_line(), spurious_audit_register(), spurious_audit_run(), string_array_to_vector(), terule_deep_diff(), terule_enable_line_numbers(), terule_get_items(), terule_new_diff(), toplevel_add_new_view(), type_deep_diff(), type_get_attrib_names(), type_get_items(), type_map_build(), type_map_entry_append_qtypes(), type_new_diff(), types_wo_allow_register(), types_wo_allow_run(), unreachable_doms_register(), unreachable_doms_run(), user_deep_diff(), user_deep_diff_roles(), user_get_roles(), user_new_diff(), users_wo_roles_register(), users_wo_roles_run(), util_open_file(), and xx_register(). 00241 {
00242 if (!v) {
00243 errno = EINVAL;
00244 return -1;
00245 }
00246
00247 if (v->size >= v->capacity && apol_vector_grow(v)) {
00248 return -1;
00249 }
00250
00251 v->array[v->size] = elem;
00252 v->size++;
00253
00254 return 0;
00255 }
|
|
||||||||||||||||||||
|
Add an element to the end of a vector unless that element is equal to an existing element.
Definition at line 257 of file vector.c. References apol_vector_append(), apol_vector_get_index(), and apol_vector_t. Referenced by apol_obj_perm_append_perm(), apol_perm_get_by_query(), remap_types_on_add_click(), role_allow_get_items(), and table_add_avrule(). 00258 {
00259 size_t i;
00260 if (apol_vector_get_index(v, elem, cmp, data, &i) < 0) {
00261 return apol_vector_append(v, elem);
00262 }
00263 errno = EEXIST;
00264 return 1;
00265 }
|
|
||||||||||||
|
Concatenate two vectors. Appends all elements of src to dest. NOTE: No type checking is done for elements in the two vectors. Elements are not deep copies.
Definition at line 408 of file vector.c. References apol_vector_append(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_t, apol_vector::array, apol_vector::capacity, and apol_vector::size. Referenced by apol_domain_trans_analysis_do(), apol_infoflow_direct_define(), apol_types_relation_allows(), build_avrule_vecs(), build_terule_vecs(), domain_trans_table_find_orphan_type_transitions(), domain_trans_table_get_all_forward_trans(), domain_trans_table_get_all_reverse_trans(), imp_range_trans_run(), model_refresh(), model_sort(), policy_components_view_init_lists(), role_allow_new_diff(), run_test(), spurious_audit_run(), and unreachable_doms_run(). 00409 {
00410 size_t i, orig_size, cap;
00411 void **a;
00412 if (!src || !apol_vector_get_size(src)) {
00413 return 0; /* nothing to append */
00414 }
00415
00416 if (!dest) {
00417 errno = EINVAL;
00418 return -1;
00419 }
00420 orig_size = apol_vector_get_size(dest);
00421 for (i = 0; i < apol_vector_get_size(src); i++)
00422 if (apol_vector_append(dest, apol_vector_get_element(src, i))) {
00423 /* revert if possible */
00424 if (orig_size == 0) {
00425 cap = 1;
00426 } else {
00427 cap = orig_size;
00428 }
00429 a = realloc(dest->array, cap * sizeof(*a));
00430 if (a != NULL) {
00431 dest->array = a;
00432 }
00433 dest->size = orig_size;
00434 dest->capacity = cap;
00435 return -1;
00436 }
00437
00438 return 0;
00439 }
|
|
||||||||||||
|
Remove an element from a vector, and renumber all subsequent elements. This does not free memory that was used by the removed element; the caller is responsible for doing that.
Definition at line 441 of file vector.c. References apol_vector_t, apol_vector::array, and apol_vector::size. Referenced by apol_domain_trans_analysis_do(), apol_query_create_candidate_syn_type_list(), apol_query_create_candidate_type_list(), apol_syn_avrule_get_by_query(), apol_syn_terule_get_by_query(), sefs_fcfile::appendFile(), log_remove_model(), model_remove_log(), poldiff_type_remap_entry_remove(), policy_components_view_on_to_exc_click(), preferences_add_recent_policy(), prefs_add_recent_vector(), seaudit_model_remove_filter(), toplevel_destroy_views(), and toplevel_on_tab_close(). 00442 {
00443 if (v == NULL || idx >= v->size) {
00444 errno = EINVAL;
00445 return -1;
00446 }
00447 memmove(v->array + idx, v->array + idx + 1, sizeof(v->array[0]) * (v->size - idx - 1));
00448 v->size--;
00449 return 0;
00450 }
|
|
||||||||||||||||||||||||
|
Compare two vectors, determining if one is different than the other. This uses a callback to compare elements across the vectors.
Definition at line 267 of file vector.c. References apol_vector_get_size(), apol_vector_t, and apol_vector::array. Referenced by apol_infoflow_trans_append(), apol_infoflow_trans_step_comp(), apol_policy_path_compare(), build_avrule_vecs(), build_rangetrans_vecs(), build_roletrans_vecs(), build_terule_vecs(), components_types_tests(), nomls_tests(), run_test(), sort_perm_comp(), and type_map_prim_aliases_comp(). 00268 {
00269 int compval;
00270 if (a == NULL || b == NULL || i == NULL) {
00271 errno = EINVAL;
00272 return 0;
00273 }
00274 size_t a_len = apol_vector_get_size(a);
00275 size_t b_len = apol_vector_get_size(b);
00276 for (*i = 0; *i < a_len && *i < b_len; (*i)++) {
00277 if (cmp != NULL) {
00278 compval = cmp(a->array[*i], b->array[*i], data);
00279 } else {
00280 compval = (int)((char *)a->array[*i] - (char *)b->array[*i]);
00281 }
00282 if (compval != 0) {
00283 return compval;
00284 }
00285 }
00286 if (a_len == b_len) {
00287 return 0;
00288 } else if (a_len < b_len) {
00289 return -1;
00290 } else {
00291 return 1;
00292 }
00293 }
|
|
||||||||||||||||
|
Sort the vector's elements within place, using an unstable sorting algorithm.
Definition at line 343 of file vector.c. References apol_vector_t, apol_vector::array, apol_vector::size, and vector_qsort(). Referenced by apol_mls_level_append_cats(), apol_mls_level_render(), apol_mls_range_get_levels(), apol_types_relation_accesses(), apol_vector_sort_uniquify(), attrib_deep_diff(), attrib_get_items(), avrule_deep_diff(), avrule_new_diff(), bool_get_items(), build_avrule_vecs(), build_rangetrans_vecs(), build_roletrans_vecs(), build_terule_vecs(), cat_get_items(), class_deep_diff(), class_get_items(), common_deep_diff(), common_get_items(), components_types_tests(), filter_view_get_policy_classes(), filter_view_get_policy_roles(), filter_view_get_policy_types(), filter_view_get_policy_users(), level_deep_diff(), level_deep_diff_apol_mls_levels(), level_get_items(), model_sort(), nomls_tests(), poldiff_get_avrule_vector(), poldiff_get_terule_vector(), poldiff_get_type_vector(), policy_view_populate_combo_boxes(), print_cat_sens(), print_cats(), print_rule_diffs(), range_deep_diff(), remap_types_update(), result_item_avrule_sort(), result_item_terule_sort(), role_allow_deep_diff(), role_deep_diff(), role_get_items(), run_test(), shallow_copy_str_vec_and_sort(), type_deep_diff(), user_deep_diff_roles(), and user_get_items(). 00344 {
00345 if (!v) {
00346 errno = EINVAL;
00347 return;
00348 }
00349 if (cmp == NULL) {
00350 cmp = vector_int_comp;
00351 }
00352 if (v->size > 1) {
00353 vector_qsort(v->array, 0, v->size - 1, cmp, data);
00354 }
00355 }
|
|
||||||||||||||||
|
Sort the vector's elements within place (see apol_vector_sort()), and then compact vector by removing duplicate entries. The vector's free function will be used to free the memory used by non-unique elements.
Definition at line 357 of file vector.c. References apol_vector_sort(), apol_vector_t, apol_vector::array, apol_vector::capacity, apol_vector::fr, and apol_vector::size. Referenced by apol_avrule_to_syn_avrules(), apol_policy_path_create(), apol_policy_path_create_from_string(), apol_query_create_candidate_class_list(), apol_query_create_candidate_role_list(), apol_query_create_candidate_syn_type_list(), apol_query_create_candidate_type_list(), apol_terule_to_syn_terules(), attrib_deep_diff(), avrule_enable_line_numbers(), avrule_get_line_numbers_for_perm(), domain_trans_table_find_orphan_type_transitions(), domain_trans_table_get_all_forward_trans(), domain_trans_table_get_all_reverse_trans(), imp_range_trans_run(), poldiff_type_remap_create(), policy_components_view_init_lists(), policy_components_view_on_to_inc_click(), query_create_candidate_type(), range_trans_get_items(), remap_types_update_view(), role_deep_diff(), role_trans_get_items(), terule_enable_line_numbers(), type_get_attrib_names(), type_get_items(), and type_map_prim_aliases_comp(). 00358 {
00359 if (!v) {
00360 errno = EINVAL;
00361 return;
00362 }
00363 if (cmp == NULL) {
00364 cmp = vector_int_comp;
00365 }
00366 if (v->size > 1) {
00367 size_t i, j = 0;
00368 void **new_array;
00369 /* sweep through the array, do a quick compaction,
00370 * then sort */
00371 for (i = 1; i < v->size; i++) {
00372 if (cmp(v->array[i], v->array[j], data) != 0) {
00373 /* found a unique element */
00374 j++;
00375 v->array[j] = v->array[i];
00376 } else {
00377 /* found a non-unique element */
00378 if (v->fr != NULL) {
00379 v->fr(v->array[i]);
00380 }
00381 }
00382 }
00383 v->size = j + 1;
00384
00385 apol_vector_sort(v, cmp, data);
00386 j = 0;
00387 for (i = 1; i < v->size; i++) {
00388 if (cmp(v->array[i], v->array[j], data) != 0) {
00389 /* found a unique element */
00390 j++;
00391 v->array[j] = v->array[i];
00392 } else {
00393 /* found a non-unique element */
00394 if (v->fr != NULL) {
00395 v->fr(v->array[i]);
00396 }
00397 }
00398 }
00399 /* try to realloc vector to save space */
00400 v->size = j + 1;
00401 if ((new_array = realloc(v->array, v->size * sizeof(void *))) != NULL) {
00402 v->array = new_array;
00403 v->capacity = v->size;
00404 }
00405 }
00406 }
|