Skip to content

Commit

Permalink
unittests: Reformat check_macro_reference_loop.c
Browse files Browse the repository at this point in the history
  • Loading branch information
xhanulik committed May 16, 2024
1 parent e9dcfe9 commit 793e388
Showing 1 changed file with 82 additions and 73 deletions.
155 changes: 82 additions & 73 deletions src/tests/unittests/check_macro_reference_loop.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,98 +27,106 @@
#include "common/compat_strlcpy.c"
#include <cmocka.h>

static void torture_no_loop(void **state)
static void
torture_no_loop(void **state)
{
scconf_list value = { .data = "value" };
sc_macro_t macro = { .name = "name", .value = &value };
sc_profile_t profile = { .macro_list = &macro };
scconf_list value = {.data = "value"};
sc_macro_t macro = {.name = "name", .value = &value};
sc_profile_t profile = {.macro_list = &macro};

int r = check_macro_reference_loop("name", &macro, &profile, 10);
assert_int_equal(r, 0);
}

static void torture_one_macro_no_loop(void **state)
static void
torture_one_macro_no_loop(void **state)
{
scconf_list value = { .data = "value" };
sc_macro_t macro = { .name = "name", .value = &value };
sc_profile_t profile = { .macro_list = &macro };
scconf_list value = {.data = "value"};
sc_macro_t macro = {.name = "name", .value = &value};
sc_profile_t profile = {.macro_list = &macro};

int r = check_macro_reference_loop("name", &macro, &profile, 10);
assert_int_equal(r, 0);
}

static void torture_one_macro_loop(void **state)
static void
torture_one_macro_loop(void **state)
{
scconf_list value = { .data = "$name" };
sc_macro_t macro = { .name = "name", .value = &value };
sc_profile_t profile = { .macro_list = &macro };
scconf_list value = {.data = "$name"};
sc_macro_t macro = {.name = "name", .value = &value};
sc_profile_t profile = {.macro_list = &macro};

int r = check_macro_reference_loop("name", &macro, &profile, 10);
assert_int_equal(r, 1);
}

static void torture_long_macro_loop(void **state)
static void
torture_long_macro_loop(void **state)
{
scconf_list value1 = { .data = "$second" };
scconf_list value2 = { .data = "$third" };
scconf_list value3 = { .data = "$first" };
sc_macro_t macro3 = { .name = "third", .value = &value3 };
sc_macro_t macro2 = { .name = "second", .value = &value2, .next = &macro3 };
sc_macro_t macro1 = { .name = "first", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value1 = {.data = "$second"};
scconf_list value2 = {.data = "$third"};
scconf_list value3 = {.data = "$first"};
sc_macro_t macro3 = {.name = "third", .value = &value3};
sc_macro_t macro2 = {.name = "second", .value = &value2, .next = &macro3};
sc_macro_t macro1 = {.name = "first", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("first", &macro1, &profile, 10);
assert_int_equal(r, 1);
}

static void torture_long_macro_loop_too_deep(void **state)
static void
torture_long_macro_loop_too_deep(void **state)
{
scconf_list value1 = { .data = "$second" };
scconf_list value2 = { .data = "$third" };
scconf_list value3 = { .data = "value" };
sc_macro_t macro3 = { .name = "third", .value = &value3 };
sc_macro_t macro2 = { .name = "second", .value = &value2, .next = &macro3 };
sc_macro_t macro1 = { .name = "first", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value1 = {.data = "$second"};
scconf_list value2 = {.data = "$third"};
scconf_list value3 = {.data = "value"};
sc_macro_t macro3 = {.name = "third", .value = &value3};
sc_macro_t macro2 = {.name = "second", .value = &value2, .next = &macro3};
sc_macro_t macro1 = {.name = "first", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("first", &macro1, &profile, 14);
assert_int_equal(r, 1);
}

static void torture_macro_loop_inner_string(void **state)
static void
torture_macro_loop_inner_string(void **state)
{
scconf_list value1 = { .data = "xx$second" };
scconf_list value2 = { .data = "$third" };
scconf_list value3 = { .data = "$first\0" };
sc_macro_t macro3 = { .name = "third", .value = &value3 };
sc_macro_t macro2 = { .name = "second", .value = &value2, .next = &macro3 };
sc_macro_t macro1 = { .name = "first", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value1 = {.data = "xx$second"};
scconf_list value2 = {.data = "$third"};
scconf_list value3 = {.data = "$first\0"};
sc_macro_t macro3 = {.name = "third", .value = &value3};
sc_macro_t macro2 = {.name = "second", .value = &value2, .next = &macro3};
sc_macro_t macro1 = {.name = "first", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("first", &macro1, &profile, 10);
assert_int_equal(r, 1);
}

static void torture_macro_loop_indirect(void **state)
static void
torture_macro_loop_indirect(void **state)
{
scconf_list value1 = { .data = "$x" };
scconf_list value2 = { .data = "-$x" };
sc_macro_t macro2 = { .name = "o", .value = &value2 };
sc_macro_t macro1 = { .name = "x", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value1 = {.data = "$x"};
scconf_list value2 = {.data = "-$x"};
sc_macro_t macro2 = {.name = "o", .value = &value2};
sc_macro_t macro1 = {.name = "x", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("o", &macro2, &profile, 10);
assert_int_equal(r, 1);
}

static void torture_macro_loop_indirect_multivalue(void **state)
static void
torture_macro_loop_indirect_multivalue(void **state)
{
scconf_list value3 = { .data = "-$x" };
scconf_list value2 = { .data = "1", .next = &value3 };
scconf_list value1 = { .data = "$x" };
sc_macro_t macro2 = { .name = "o", .value = &value2 };
sc_macro_t macro1 = { .name = "x", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value3 = {.data = "-$x"};
scconf_list value2 = {.data = "1", .next = &value3};
scconf_list value1 = {.data = "$x"};
sc_macro_t macro2 = {.name = "o", .value = &value2};
sc_macro_t macro1 = {.name = "x", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("o", &macro2, &profile, 10);
assert_int_equal(r, 1);
Expand All @@ -130,13 +138,13 @@ static void torture_macro_loop_indirect_multivalue(void **state)
*/
static void torture_macro_loop_indirect_nonprintable(void **state)
{
scconf_list value3 = { .data = "$\270\270x\001" };
scconf_list value2 = { .data = "$e" };
scconf_list value1 = { .data = "$e" };
sc_macro_t macro3 = { .name = "e", .value = &value3 };
sc_macro_t macro2 = { .name = "osi", .value = &value2, .next = &macro3};
sc_macro_t macro1 = { .name = "\270\270x\001", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value3 = {.data = "$\270\270x\001"};
scconf_list value2 = {.data = "$e"};
scconf_list value1 = {.data = "$e"};
sc_macro_t macro3 = {.name = "e", .value = &value3};
sc_macro_t macro2 = {.name = "osi", .value = &value2, .next = &macro3};
sc_macro_t macro1 = {.name = "\270\270x\001", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("osi", &macro2, &profile, 10);
assert_int_equal(r, 1);
Expand All @@ -146,15 +154,16 @@ static void torture_macro_loop_indirect_nonprintable(void **state)
/*
*A reproducer for https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=68061
*/
static void torture_macro_loop_long_name(void **state)
static void
torture_macro_loop_long_name(void **state)
{
scconf_list value1 = { .data = "$second" };
scconf_list value2 = { .data = "$dtBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBe" };
scconf_list value3 = { .data = "$second" };
sc_macro_t macro3 = { .name = "dtBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBe", .value = &value3 };
sc_macro_t macro2 = { .name = "second", .value = &value2, .next = &macro3 };
sc_macro_t macro1 = { .name = "first", .value = &value1, .next = &macro2 };
sc_profile_t profile = { .macro_list = &macro1 };
scconf_list value1 = {.data = "$second"};
scconf_list value2 = {.data = "$dtBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBe"};
scconf_list value3 = {.data = "$second"};
sc_macro_t macro3 = {.name = "dtBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBBe", .value = &value3};
sc_macro_t macro2 = {.name = "second", .value = &value2, .next = &macro3};
sc_macro_t macro1 = {.name = "first", .value = &value1, .next = &macro2};
sc_profile_t profile = {.macro_list = &macro1};

int r = check_macro_reference_loop("first", &macro1, &profile, 10);
assert_int_equal(r, 1);
Expand All @@ -163,15 +172,15 @@ static void torture_macro_loop_long_name(void **state)
int main(void)
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(torture_no_loop),
cmocka_unit_test(torture_one_macro_no_loop),
cmocka_unit_test(torture_one_macro_loop),
cmocka_unit_test(torture_long_macro_loop),
cmocka_unit_test(torture_long_macro_loop_too_deep),
cmocka_unit_test(torture_macro_loop_inner_string),
cmocka_unit_test(torture_macro_loop_indirect),
cmocka_unit_test(torture_macro_loop_indirect_multivalue),
cmocka_unit_test(torture_macro_loop_long_name),
cmocka_unit_test(torture_no_loop),
cmocka_unit_test(torture_one_macro_no_loop),
cmocka_unit_test(torture_one_macro_loop),
cmocka_unit_test(torture_long_macro_loop),
cmocka_unit_test(torture_long_macro_loop_too_deep),
cmocka_unit_test(torture_macro_loop_inner_string),
cmocka_unit_test(torture_macro_loop_indirect),
cmocka_unit_test(torture_macro_loop_indirect_multivalue),
cmocka_unit_test(torture_macro_loop_long_name),
};
return cmocka_run_group_tests(tests, NULL, NULL);
}

0 comments on commit 793e388

Please sign in to comment.