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 components-tests.c.
#include <config.h>
#include "libpoldiff-tests.h"
#include "components-tests.h"
#include "policy-defs.h"
#include <CUnit/Basic.h>
#include <CUnit/TestDB.h>
#include <apol/util.h>
#include <stdio.h>
#include <errno.h>
#include <getopt.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
Go to the source code of this file.
|
|
Definition at line 337 of file components-tests.c. References added_v, apol_str_appendf(), apol_vector_append(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_t, component_funcs_t, diff, modified_name_only_v, modified_v, and removed_v. Referenced by run_test(). 00338 {
00339 size_t i;
00340 const void *item = NULL;
00341 const apol_vector_t *v = NULL;
00342 v = component_funcs->get_diff_vector(diff);
00343 for (i = 0; i < apol_vector_get_size(v); i++) {
00344 item = apol_vector_get_element(v, i);
00345 const char *name_only = NULL;
00346 name_only = component_funcs->get_name(item);
00347 if (component_funcs->get_form(item) == POLDIFF_FORM_ADDED) {
00348 apol_vector_append(added_v, strdup(name_only));
00349 } else if (component_funcs->get_form(item) == POLDIFF_FORM_REMOVED) {
00350 apol_vector_append(removed_v, strdup(name_only));
00351 } else if (component_funcs->get_form(item) == POLDIFF_FORM_MODIFIED) {
00352 apol_vector_append(modified_name_only_v, strdup(name_only));
00353 size_t j;
00354 if (component_funcs->get_added) {
00355 const apol_vector_t *added_elements = component_funcs->get_added(item);
00356 for (j = 0; j < apol_vector_get_size(added_elements); ++j) {
00357 char *added_element;
00358 added_element = apol_vector_get_element(added_elements, j);
00359 char *modification_str = NULL;
00360 size_t modification_str_len = 0;
00361 apol_str_appendf(&modification_str, &modification_str_len, "%s %s%s", name_only, "+",
00362 added_element);
00363 apol_vector_append(modified_v, modification_str);
00364 }
00365 }
00366 if (component_funcs->get_removed) {
00367 const apol_vector_t *removed_elements = component_funcs->get_removed(item);
00368 for (j = 0; j < apol_vector_get_size(removed_elements); ++j) {
00369 char *removed_element;
00370 removed_element = apol_vector_get_element(removed_elements, j);
00371 char *modification_str = NULL;
00372 size_t modification_str_len = 0;
00373 apol_str_appendf(&modification_str, &modification_str_len, "%s %s%s", name_only, "-",
00374 removed_element);
00375 apol_vector_append(modified_v, modification_str);
00376 }
00377 }
00378 if (!(component_funcs->get_added && component_funcs)) {
00379 apol_vector_append(modified_v, strdup(name_only));
00380 }
00381 }
00382 }
00383 }
|
|
|
Definition at line 385 of file components-tests.c. References added_types, aliased_types, apol_policy_get_qpol(), apol_str_append(), apol_str_appendf(), apol_str_strcmp(), apol_vector_append(), apol_vector_compare(), apol_vector_create(), apol_vector_create_from_intersection(), apol_vector_destroy(), apol_vector_get_element(), apol_vector_get_size(), apol_vector_sort(), apol_vector_t, cleanup_test(), compare_str(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), mod_policy, modified_types, orig_policy, poldiff_get_type_vector(), poldiff_test_answers_t, poldiff_type_get_form(), print_test_failure(), qpol_iterator_destroy(), qpol_iterator_end(), qpol_iterator_get_item(), qpol_iterator_next(), qpol_iterator_t, qpol_policy_get_type_by_name(), qpol_policy_get_type_iter(), qpol_policy_t, qpol_type_get_alias_iter(), qpol_type_get_isalias(), qpol_type_get_name(), qpol_type_t, removed_types, run_test(), string_array_to_vector(), and unchanged_types. Referenced by main(). 00386 {
00387 poldiff_test_answers_t *answers = init_answer_vectors(added_types, removed_types, unchanged_types, modified_types);
00388 component_funcs_t *funcs = init_test_funcs(poldiff_get_type_vector, poldiff_type_get_name_w,
00389 poldiff_type_get_form, poldiff_type_get_added_attribs_w,
00390 poldiff_type_get_removed_attribs_w);
00391 run_test(funcs, answers, COMPONENT);
00392 free(funcs);
00393 /* this is for the alias tests */
00394 size_t i;
00395 apol_vector_t *orig_aliases_v = apol_vector_create(free);
00396 apol_vector_t *mod_aliases_v = apol_vector_create(free);
00397 apol_vector_t *final_aliases_v = apol_vector_create(free);
00398 apol_vector_t *correct_final_aliases_v = string_array_to_vector(aliased_types);
00399 apol_vector_t *changed_aliases_v;
00400
00401 qpol_policy_t *orig_qpolicy = apol_policy_get_qpol(orig_policy);
00402 qpol_policy_t *mod_qpolicy = apol_policy_get_qpol(mod_policy);
00403
00404 qpol_iterator_t *orig_types;
00405 qpol_iterator_t *mod_types;
00406
00407 qpol_policy_get_type_iter(mod_qpolicy, &orig_types);
00408 for (; !qpol_iterator_end(orig_types); qpol_iterator_next(orig_types)) {
00409 unsigned char isalias = 0;
00410 qpol_type_t *qpol_type;
00411 const char *name;
00412 qpol_iterator_get_item(orig_types, (void **)&qpol_type);
00413 qpol_type_get_name(orig_qpolicy, qpol_type, &name);
00414 qpol_type_get_isalias(orig_qpolicy, qpol_type, &isalias);
00415 if (!isalias) {
00416 apol_vector_append(orig_aliases_v, strdup(name));
00417 }
00418 }
00419 qpol_policy_get_type_iter(mod_qpolicy, &mod_types);
00420 for (; !qpol_iterator_end(mod_types); qpol_iterator_next(mod_types)) {
00421 unsigned char isalias = 0;
00422 const qpol_type_t *qpol_type;
00423 const char *name;
00424 qpol_iterator_get_item(mod_types, (void **)&qpol_type);
00425 qpol_type_get_name(mod_qpolicy, qpol_type, &name);
00426 qpol_type_get_isalias(mod_qpolicy, qpol_type, &isalias);
00427 if (isalias) {
00428 apol_vector_append(mod_aliases_v, strdup(name));
00429 }
00430 }
00431
00432 changed_aliases_v = apol_vector_create_from_intersection(orig_aliases_v, mod_aliases_v, apol_str_strcmp, NULL);
00433 char *alias_str = NULL, *str = NULL;
00434 size_t alias_str_len = 0, str_len = 0;
00435 for (i = 0; i < apol_vector_get_size(changed_aliases_v); ++i) {
00436 char *name = apol_vector_get_element(changed_aliases_v, i);
00437 qpol_iterator_t *aliased_to;
00438 const qpol_type_t *qtype;
00439 qpol_policy_get_type_by_name(mod_qpolicy, name, &qtype);
00440 qpol_type_get_alias_iter(mod_qpolicy, qtype, &aliased_to);
00441 for (; !qpol_iterator_end(aliased_to); qpol_iterator_next(aliased_to)) {
00442 const char *name;
00443 qpol_iterator_get_item(aliased_to, (void **)&name);
00444 apol_str_append(&alias_str, &alias_str_len, name);
00445 }
00446 apol_str_appendf(&str, &str_len, "%s -> %s", name, alias_str);
00447 free(alias_str);
00448 apol_vector_append(final_aliases_v, str);
00449 qpol_iterator_destroy(&aliased_to);
00450 }
00451 apol_vector_sort(final_aliases_v, compare_str, NULL);
00452 apol_vector_sort(correct_final_aliases_v, compare_str, NULL);
00453 size_t first_diff = 0;
00454 int test_result;
00455
00456 CU_ASSERT_FALSE(test_result =
00457 apol_vector_compare(final_aliases_v, correct_final_aliases_v, compare_str, NULL, &first_diff));
00458 if (test_result) {
00459 print_test_failure(final_aliases_v, correct_final_aliases_v, first_diff, "Aliases");
00460 }
00461 apol_vector_destroy(&orig_aliases_v);
00462 apol_vector_destroy(&mod_aliases_v);
00463 apol_vector_destroy(&final_aliases_v);
00464 apol_vector_destroy(&correct_final_aliases_v);
00465 apol_vector_destroy(&changed_aliases_v);
00466 qpol_iterator_destroy(&mod_types);
00467 qpol_iterator_destroy(&orig_types);
00468
00469 cleanup_test(answers);
00470 }
|
|
|
Definition at line 472 of file components-tests.c. References added_bools, cleanup_test(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), modified_bools, poldiff_bool_get_form(), poldiff_get_bool_vector(), poldiff_test_answers_t, removed_bools, run_test(), and unchanged_bools. Referenced by main(). 00473 {
00474 poldiff_test_answers_t *answers = init_answer_vectors(added_bools, removed_bools, unchanged_bools, modified_bools);
00475 component_funcs_t *funcs = init_test_funcs(poldiff_get_bool_vector, poldiff_bool_get_name_w,
00476 poldiff_bool_get_form, NULL, NULL);
00477 run_test(funcs, answers, COMPONENT);
00478 free(funcs);
00479 cleanup_test(answers);
00480 }
|
|
|
Definition at line 482 of file components-tests.c. References added_users, cleanup_test(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), modified_users, poldiff_get_user_vector(), poldiff_test_answers_t, poldiff_user_get_form(), removed_users, run_test(), and unchanged_users. Referenced by main(). 00483 {
00484 poldiff_test_answers_t *answers = init_answer_vectors(added_users, removed_users, unchanged_users, modified_users);
00485 component_funcs_t *funcs = init_test_funcs(poldiff_get_user_vector, poldiff_user_get_name_w,
00486 poldiff_user_get_form, poldiff_user_get_added_roles_w,
00487 poldiff_user_get_removed_roles_w);
00488 run_test(funcs, answers, COMPONENT);
00489 free(funcs);
00490 cleanup_test(answers);
00491 }
|
|
|
Definition at line 493 of file components-tests.c. References added_roles, cleanup_test(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), modified_roles, poldiff_get_role_vector(), poldiff_role_get_form(), poldiff_test_answers_t, removed_roles, run_test(), and unchanged_roles. Referenced by main(). 00494 {
00495 poldiff_test_answers_t *answers = init_answer_vectors(added_roles, removed_roles, unchanged_roles, modified_roles);
00496 component_funcs_t *funcs = init_test_funcs(poldiff_get_role_vector, poldiff_role_get_name_w, poldiff_role_get_form,
00497 poldiff_role_get_added_types_w, poldiff_role_get_removed_types_w);
00498 run_test(funcs, answers, COMPONENT);
00499 free(funcs);
00500 cleanup_test(answers);
00501 }
|
|
|
Definition at line 503 of file components-tests.c. References added_commons, cleanup_test(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), modified_commons, poldiff_common_get_form(), poldiff_get_common_vector(), poldiff_test_answers_t, removed_commons, run_test(), and unchanged_commons. Referenced by main(). 00504 {
00505 poldiff_test_answers_t *answers = init_answer_vectors(added_commons, removed_commons, unchanged_commons, modified_commons);
00506 component_funcs_t *funcs = init_test_funcs(poldiff_get_common_vector, poldiff_common_get_name_w, poldiff_common_get_form,
00507 poldiff_common_get_added_perms_w, poldiff_common_get_removed_perms_w);
00508 run_test(funcs, answers, COMPONENT);
00509 free(funcs);
00510 cleanup_test(answers);
00511 }
|
|
|
Definition at line 513 of file components-tests.c. References added_attributes, cleanup_test(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), modified_attributes, poldiff_attrib_get_form(), poldiff_get_attrib_vector(), poldiff_test_answers_t, removed_attributes, run_test(), and unchanged_attributes. Referenced by main(). 00514 {
00515 poldiff_test_answers_t *answers =
00516 init_answer_vectors(added_attributes, removed_attributes, unchanged_attributes, modified_attributes);
00517 component_funcs_t *funcs = init_test_funcs(poldiff_get_attrib_vector, poldiff_attrib_get_name_w,
00518 poldiff_attrib_get_form, poldiff_attrib_get_added_types_w,
00519 poldiff_attrib_get_removed_types_w);
00520
00521 run_test(funcs, answers, COMPONENT);
00522 free(funcs);
00523 cleanup_test(answers);
00524 }
|
|
|
Definition at line 526 of file components-tests.c. References added_classes, cleanup_test(), COMPONENT, component_funcs_t, init_answer_vectors(), init_test_funcs(), modified_classes, poldiff_class_get_form(), poldiff_get_class_vector(), poldiff_test_answers_t, removed_classes, run_test(), and unchanged_classes. Referenced by main(). 00527 {
00528 poldiff_test_answers_t *answers = init_answer_vectors(added_classes, removed_classes, unchanged_classes, modified_classes);
00529 component_funcs_t *funcs = init_test_funcs(poldiff_get_class_vector, poldiff_class_get_name_w,
00530 poldiff_class_get_form, poldiff_class_get_added_perms_w,
00531 poldiff_class_get_removed_perms_w);
00532 run_test(funcs, answers, COMPONENT);
00533 free(funcs);
00534 cleanup_test(answers);
00535 }
|
|
|
Definition at line 537 of file components-tests.c. References COMPONENTS_MOD_POLICY, COMPONENTS_ORIG_POLICY, diff, and init_poldiff(). 00538 {
00539 if (!(diff = init_poldiff(COMPONENTS_ORIG_POLICY, COMPONENTS_MOD_POLICY))) {
00540 return 1;
00541 } else {
00542 return 0;
00543 }
00544 }
|
|
|
Initial value: {
"data",
NULL
}
Definition at line 42 of file components-tests.c. Referenced by components_attributes_tests(). |
|
|
Initial value: {
"mineral",
NULL
}
Definition at line 47 of file components-tests.c. Referenced by components_attributes_tests(). |
|
|
Initial value: {
"other",
NULL
}
Definition at line 52 of file components-tests.c. Referenced by components_attributes_tests(). |
|
|
Initial value: {
"tree +holly_t",
"fish -bass_t",
"plant -daikon_t",
"animal +hippo_t",
"animal -bass_t",
"animal -koala_t",
"mammal +hippo_t",
"mammal -bear_t",
NULL
}
Definition at line 57 of file components-tests.c. Referenced by components_attributes_tests(). |
|
|
Initial value: {
"frog",
NULL
}
Definition at line 71 of file components-tests.c. Referenced by components_bools_tests(). |
|
|
Initial value: {
"shark",
NULL
}
Definition at line 76 of file components-tests.c. Referenced by components_bools_tests(). |
|
|
Initial value: {
"dog",
NULL
}
Definition at line 81 of file components-tests.c. Referenced by components_bools_tests(). |
|
|
Initial value: {
"wark",
NULL
}
Definition at line 86 of file components-tests.c. Referenced by components_bools_tests(). |
|
|
Initial value: {
"filesystem", "dir", "blk_file", "sock_file", "fifo_file", "netif",
"process", "msg", "security", "system", "capability", "passwd",
"window", "font", "colormap", "property", "cursor", "xclient",
"xinput", "xserver", "xextension", "pax", "dbus", "ncsd",
"association", "context", NULL
}
Definition at line 91 of file components-tests.c. Referenced by components_class_tests(). |
|
|
Initial value: {
"thing",
NULL
}
Definition at line 99 of file components-tests.c. Referenced by components_class_tests(). |
|
|
Initial value: {
"key",
NULL
}
Definition at line 104 of file components-tests.c. Referenced by components_class_tests(). |
|
|
Definition at line 109 of file components-tests.c. Referenced by components_class_tests(). |
|
|
Initial value: {
"file",
NULL
}
Definition at line 163 of file components-tests.c. Referenced by components_commons_tests(). |
|
|
Initial value: {
"new",
NULL
}
Definition at line 168 of file components-tests.c. Referenced by components_commons_tests(). |
|
|
Initial value: {
"old",
NULL
}
Definition at line 173 of file components-tests.c. Referenced by components_commons_tests(). |
|
|
Initial value: {
"ipc +unix_exec",
"socket -name_bind",
"bob -blah",
"bob +bar",
NULL
}
Definition at line 178 of file components-tests.c. Referenced by components_commons_tests(). |
|
|
Initial value: {
"placeholder_r", "admin_r", "intern_r",
NULL
}
Definition at line 189 of file components-tests.c. Referenced by components_roles_tests(). |
|
|
Initial value: {
"strange_r",
NULL
}
Definition at line 194 of file components-tests.c. Referenced by build_nomls_vecs(), and components_roles_tests(). |
|
|
Initial value: {
"guest_r",
NULL
}
Definition at line 199 of file components-tests.c. Referenced by build_nomls_vecs(), and components_roles_tests(). |
|
|
Initial value: {
"user_r +hippo_t",
"lumberjack_r +holly_t",
"staff_r -bass_t",
"aquarium_r -bass_t",
"garden_r -daikon_t",
"object_r +hippo_t",
"object_r +acorn_t",
"object_r -bass_t",
"object_r -koala_t",
"deity_r +acorn_t",
"deity_r +hippo_t",
"deity_r -bass_t",
"deity_r -dirt_t",
"deity_r -koala_t",
"zoo_r +hippo_t",
"zoo_r -bass_t",
"zoo_r -koala_t",
"mammal_r +hippo_t",
"mammal_r -bear_t",
NULL
}
Definition at line 204 of file components-tests.c. Referenced by components_roles_tests(). |
|
|
Initial value: {
"placeholder_t", "finch_t", "trout_t",
"birch_t", "oak_t", "potato_t", "tiger_t",
"lion_t", "pine_t", "log_t", "file_t",
"firefly_t", "lightningbug_t",
"rock_t", "big_stone_t",
NULL
}
Definition at line 233 of file components-tests.c. Referenced by components_types_tests(). |
|
|
Initial value: {
"hippo_t",
"acorn_t",
NULL
}
Definition at line 245 of file components-tests.c. Referenced by attrib_deep_diff(), components_types_tests(), and role_deep_diff(). |
|
|
Initial value: {
"bass_t",
"koala_t",
NULL
}
Definition at line 253 of file components-tests.c. Referenced by attrib_deep_diff(), components_types_tests(), and role_deep_diff(). |
|
|
Initial value: {
"holly_t +tree",
"bear_t -mammal",
"daikon_t -plant",
"daikon_t +mineral",
"glass_t -> crystal_t +mineral",
"dirt_t -> soil_t +mineral",
"stone_t -other",
"system_t -other",
NULL
}
Definition at line 261 of file components-tests.c. Referenced by components_types_tests(). |
|
|
Initial value: {
"bear_t -> koala_t",
NULL
}
Definition at line 278 of file components-tests.c. Referenced by components_types_tests(). |
|
|
Initial value: {
"placeholder_u", "su_u", "cyn_u", "danika_u",
NULL
}
Definition at line 284 of file components-tests.c. Referenced by components_users_tests(). |
|
|
Initial value: {
"gai_u",
NULL
}
Definition at line 289 of file components-tests.c. Referenced by components_users_tests(). |
|
|
Initial value: {
"mehnlo_u",
NULL
}
Definition at line 294 of file components-tests.c. Referenced by components_users_tests(). |
|
|
Initial value: {
"devona_u +aquarium_r",
"eve_u +strange_r",
"nika_u -user_r",
"meloni_u +garden_r",
"meloni_u -user_r",
NULL
}
Definition at line 299 of file components-tests.c. Referenced by components_users_tests(). |