From f7778c55206dbbaf0a13e8372e3d3019485809c4 Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Sat, 3 Feb 2024 15:47:21 -0500 Subject: [PATCH] Move to init/free for library, and not for each test case now that we (mostly) have library-based init/free, we do not need to do that for every test case. Either the library is properly initialized and it works, or the library isn't initialized, and the tests fail. Some protocols still need to be converted to use fr_dict_protocol_t ethernet, tacacs, tftp, vmps --- src/protocols/arp/base.c | 14 ++++---------- src/protocols/bfd/base.c | 3 +++ src/protocols/bfd/decode.c | 10 ---------- src/protocols/bfd/encode.c | 10 ---------- src/protocols/dhcpv4/decode.c | 10 ---------- src/protocols/dhcpv4/encode.c | 10 ---------- src/protocols/dhcpv6/base.c | 1 - src/protocols/dhcpv6/decode.c | 13 ------------- src/protocols/dhcpv6/encode.c | 10 ---------- src/protocols/dns/base.c | 3 +++ src/protocols/dns/decode.c | 8 -------- src/protocols/dns/encode.c | 10 ---------- src/protocols/radius/decode.c | 12 ------------ src/protocols/radius/encode.c | 10 ---------- src/protocols/tacacs/encode.c | 1 - 15 files changed, 10 insertions(+), 115 deletions(-) diff --git a/src/protocols/arp/base.c b/src/protocols/arp/base.c index 3862d4227e5..3de29dcaa8f 100644 --- a/src/protocols/arp/base.c +++ b/src/protocols/arp/base.c @@ -295,6 +295,9 @@ fr_dict_protocol_t libfreeradius_arp_dict_protocol = { .name = "arp", .default_type_size = 4, .default_type_length = 0, + + .init = fr_arp_init, + .free = fr_arp_free, }; @@ -302,24 +305,15 @@ typedef struct { bool tmp; } fr_arp_ctx_t; -static int _test_ctx_free(UNUSED fr_arp_ctx_t *ctx) -{ - fr_arp_free(); - - return 0; -} - static int encode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_arp_ctx_t *test_ctx; - if (fr_arp_init() < 0) return -1; + fr_assert(instance_count > 0); test_ctx = talloc_zero(ctx, fr_arp_ctx_t); if (!test_ctx) return -1; - talloc_set_destructor(test_ctx, _test_ctx_free); - *out = test_ctx; return 0; diff --git a/src/protocols/bfd/base.c b/src/protocols/bfd/base.c index 5d0dd63814f..9b693d81311 100644 --- a/src/protocols/bfd/base.c +++ b/src/protocols/bfd/base.c @@ -255,4 +255,7 @@ fr_dict_protocol_t libfreeradius_bfd_dict_protocol = { .name = "bfd", .default_type_size = 1, .default_type_length = 1, + + .init = fr_bfd_init, + .free = fr_bfd_free, }; diff --git a/src/protocols/bfd/decode.c b/src/protocols/bfd/decode.c index fdd6af3b9ec..81e33fdf9dd 100644 --- a/src/protocols/bfd/decode.c +++ b/src/protocols/bfd/decode.c @@ -99,23 +99,13 @@ ssize_t fr_bfd_decode(TALLOC_CTX *ctx, fr_pair_list_t *out, return slen; } -static int _test_ctx_free(UNUSED fr_bfd_ctx_t *ctx) -{ - fr_bfd_free(); - - return 0; -} - static int decode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_bfd_ctx_t *test_ctx; - if (fr_bfd_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_bfd_ctx_t); test_ctx->secret = talloc_strdup(test_ctx, "testing123"); test_ctx->tmp_ctx = talloc_zero(test_ctx, uint8_t); - talloc_set_destructor(test_ctx, _test_ctx_free); *out = test_ctx; diff --git a/src/protocols/bfd/encode.c b/src/protocols/bfd/encode.c index 80e272dc754..4e449d625f2 100644 --- a/src/protocols/bfd/encode.c +++ b/src/protocols/bfd/encode.c @@ -163,24 +163,14 @@ ssize_t fr_bfd_encode(uint8_t *out, size_t outlen, UNUSED uint8_t const *origina } -static int _test_ctx_free(UNUSED fr_bfd_ctx_t *ctx) -{ - fr_bfd_free(); - - return 0; -} - static int encode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_bfd_ctx_t *test_ctx; - if (fr_bfd_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_bfd_ctx_t); if (!test_ctx) return -1; test_ctx->secret = talloc_strdup(test_ctx, "testing123"); - talloc_set_destructor(test_ctx, _test_ctx_free); *out = test_ctx; diff --git a/src/protocols/dhcpv4/decode.c b/src/protocols/dhcpv4/decode.c index cb039a29f5a..516c7f0d711 100644 --- a/src/protocols/dhcpv4/decode.c +++ b/src/protocols/dhcpv4/decode.c @@ -677,21 +677,11 @@ ssize_t fr_dhcpv4_decode_foreign(TALLOC_CTX *ctx, fr_pair_list_t *out, } -static int _decode_test_ctx(UNUSED fr_dhcpv4_ctx_t *test_ctx) -{ - fr_dhcpv4_global_free(); - - return 0; -} - static int decode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_dhcpv4_ctx_t *test_ctx; - if (fr_dhcpv4_global_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_dhcpv4_ctx_t); - talloc_set_destructor(test_ctx, _decode_test_ctx); test_ctx->tmp_ctx = talloc(test_ctx, uint8_t); *out = test_ctx; diff --git a/src/protocols/dhcpv4/encode.c b/src/protocols/dhcpv4/encode.c index 68470fc48fb..541edc91f22 100644 --- a/src/protocols/dhcpv4/encode.c +++ b/src/protocols/dhcpv4/encode.c @@ -788,23 +788,13 @@ static ssize_t fr_dhcpv4_encode_proto(UNUSED TALLOC_CTX *ctx, fr_pair_list_t *vp return fr_dhcpv4_encode_dbuff(&FR_DBUFF_TMP(data, data_len), NULL, 0, 0, vps); } -static int _encode_test_ctx(UNUSED fr_dhcpv4_ctx_t *test_ctx) -{ - fr_dhcpv4_global_free(); - - return 0; -} - static int encode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_dhcpv4_ctx_t *test_ctx; - if (fr_dhcpv4_global_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_dhcpv4_ctx_t); if (!test_ctx) return -1; test_ctx->root = fr_dict_root(dict_dhcpv4); - talloc_set_destructor(test_ctx, _encode_test_ctx); *out = test_ctx; diff --git a/src/protocols/dhcpv6/base.c b/src/protocols/dhcpv6/base.c index dd6e1b2ce68..8c2b4916daf 100644 --- a/src/protocols/dhcpv6/base.c +++ b/src/protocols/dhcpv6/base.c @@ -1001,7 +1001,6 @@ fr_dict_protocol_t libfreeradius_dhcpv6_dict_protocol = { .subtype_table_len = NUM_ELEMENTS(subtype_table), .attr_valid = attr_valid, - .init = fr_dhcpv6_global_init, .free = fr_dhcpv6_global_free, diff --git a/src/protocols/dhcpv6/decode.c b/src/protocols/dhcpv6/decode.c index 1ccf7f504b5..5840ef16ade 100644 --- a/src/protocols/dhcpv6/decode.c +++ b/src/protocols/dhcpv6/decode.c @@ -472,27 +472,14 @@ ssize_t fr_dhcpv6_decode_foreign(TALLOC_CTX *ctx, fr_pair_list_t *out, return data_len; } -/* - * Stub functions to enable test context - */ -static int _test_ctx_free(UNUSED fr_dhcpv6_decode_ctx_t *ctx) -{ - fr_dhcpv6_global_free(); - - return 0; -} - static int decode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_dhcpv6_decode_ctx_t *test_ctx; - if (fr_dhcpv6_global_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_dhcpv6_decode_ctx_t); if (!test_ctx) return -1; test_ctx->tmp_ctx = talloc(test_ctx, uint8_t); - talloc_set_destructor(test_ctx, _test_ctx_free); *out = test_ctx; diff --git a/src/protocols/dhcpv6/encode.c b/src/protocols/dhcpv6/encode.c index 036ee542930..8ce1918f905 100644 --- a/src/protocols/dhcpv6/encode.c +++ b/src/protocols/dhcpv6/encode.c @@ -742,24 +742,14 @@ ssize_t fr_dhcpv6_encode_foreign(fr_dbuff_t *dbuff, fr_pair_list_t const *list) } -static int _test_ctx_free(UNUSED fr_dhcpv6_encode_ctx_t *ctx) -{ - fr_dhcpv6_global_free(); - - return 0; -} - static int encode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_dhcpv6_encode_ctx_t *test_ctx; - if (fr_dhcpv6_global_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_dhcpv6_encode_ctx_t); if (!test_ctx) return -1; test_ctx->root = fr_dict_root(dict_dhcpv6); - talloc_set_destructor(test_ctx, _test_ctx_free); *out = test_ctx; diff --git a/src/protocols/dns/base.c b/src/protocols/dns/base.c index 1c9e58a5d1a..7f361a87bff 100644 --- a/src/protocols/dns/base.c +++ b/src/protocols/dns/base.c @@ -469,4 +469,7 @@ fr_dict_protocol_t libfreeradius_dns_dict_protocol = { .subtype_table = subtype_table, .subtype_table_len = NUM_ELEMENTS(subtype_table), .attr_valid = attr_valid, + + .init = fr_dns_global_init, + .free = fr_dns_global_free, }; diff --git a/src/protocols/dns/decode.c b/src/protocols/dns/decode.c index 290ca1f7b67..a3f39c8d5f6 100644 --- a/src/protocols/dns/decode.c +++ b/src/protocols/dns/decode.c @@ -372,13 +372,6 @@ static ssize_t decode_rr(TALLOC_CTX *ctx, fr_pair_list_t *out, UNUSED fr_dict_at /* * Test points */ -static int _decode_test_ctx(UNUSED fr_dns_ctx_t *test_ctx) -{ - fr_dns_global_free(); - - return 0; -} - static int decode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_dns_ctx_t *test_ctx; @@ -386,7 +379,6 @@ static int decode_test_ctx(void **out, TALLOC_CTX *ctx) if (fr_dns_global_init() < 0) return -1; test_ctx = talloc_zero(ctx, fr_dns_ctx_t); - talloc_set_destructor(test_ctx, _decode_test_ctx); test_ctx->tmp_ctx = talloc(test_ctx, uint8_t); *out = test_ctx; diff --git a/src/protocols/dns/encode.c b/src/protocols/dns/encode.c index 6e88a094faa..7007cca77cf 100644 --- a/src/protocols/dns/encode.c +++ b/src/protocols/dns/encode.c @@ -512,23 +512,13 @@ ssize_t fr_dns_encode(fr_dbuff_t *dbuff, fr_pair_list_t *vps, fr_dns_ctx_t *pack return fr_dbuff_set(dbuff, &work_dbuff); } -static int _test_ctx_free(UNUSED fr_dns_ctx_t *ctx) -{ - fr_dns_global_free(); - - return 0; -} - static int encode_test_ctx(void **out, TALLOC_CTX *ctx) { fr_dns_ctx_t *test_ctx; - if (fr_dns_global_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_dns_ctx_t); if (!test_ctx) return -1; - talloc_set_destructor(test_ctx, _test_ctx_free); test_ctx->tmp_ctx = talloc(test_ctx, uint8_t); *out = test_ctx; diff --git a/src/protocols/radius/decode.c b/src/protocols/radius/decode.c index 8831a4523be..d54e6037468 100644 --- a/src/protocols/radius/decode.c +++ b/src/protocols/radius/decode.c @@ -2114,15 +2114,6 @@ ssize_t fr_radius_decode_foreign(TALLOC_CTX *ctx, fr_pair_list_t *out, } -static int _test_ctx_free(fr_radius_decode_ctx_t *ctx) -{ - TALLOC_FREE(ctx->tags); - - fr_radius_free(); - - return 0; -} - static int decode_test_ctx(void **out, TALLOC_CTX *ctx) { static uint8_t vector[RADIUS_AUTH_VECTOR_LENGTH] = { @@ -2131,8 +2122,6 @@ static int decode_test_ctx(void **out, TALLOC_CTX *ctx) fr_radius_decode_ctx_t *test_ctx; - if (fr_radius_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_radius_decode_ctx_t); test_ctx->common = talloc_zero(test_ctx, fr_radius_ctx_t); @@ -2141,7 +2130,6 @@ static int decode_test_ctx(void **out, TALLOC_CTX *ctx) test_ctx->request_authenticator = vector; test_ctx->tmp_ctx = talloc_zero(test_ctx, uint8_t); - talloc_set_destructor(test_ctx, _test_ctx_free); *out = test_ctx; diff --git a/src/protocols/radius/encode.c b/src/protocols/radius/encode.c index ea096786c91..58409c051cc 100644 --- a/src/protocols/radius/encode.c +++ b/src/protocols/radius/encode.c @@ -1696,13 +1696,6 @@ ssize_t fr_radius_encode_foreign(fr_dbuff_t *dbuff, fr_pair_list_t const *list) } -static int _test_ctx_free(UNUSED fr_radius_encode_ctx_t *ctx) -{ - fr_radius_free(); - - return 0; -} - static int encode_test_ctx(void **out, TALLOC_CTX *ctx) { static uint8_t vector[RADIUS_AUTH_VECTOR_LENGTH] = { @@ -1711,8 +1704,6 @@ static int encode_test_ctx(void **out, TALLOC_CTX *ctx) fr_radius_encode_ctx_t *test_ctx; - if (fr_radius_init() < 0) return -1; - test_ctx = talloc_zero(ctx, fr_radius_encode_ctx_t); if (!test_ctx) return -1; @@ -1724,7 +1715,6 @@ static int encode_test_ctx(void **out, TALLOC_CTX *ctx) test_ctx->request_authenticator = vector; test_ctx->rand_ctx.a = 6809; test_ctx->rand_ctx.b = 2112; - talloc_set_destructor(test_ctx, _test_ctx_free); *out = test_ctx; diff --git a/src/protocols/tacacs/encode.c b/src/protocols/tacacs/encode.c index cf151857a99..881fc3e4cb4 100644 --- a/src/protocols/tacacs/encode.c +++ b/src/protocols/tacacs/encode.c @@ -1066,7 +1066,6 @@ static int encode_test_ctx(void **out, TALLOC_CTX *ctx) test_ctx = talloc_zero(ctx, fr_tacacs_ctx_t); if (!test_ctx) return -1; -// test_ctx->secret = talloc_strdup(test_ctx, "testing123"); test_ctx->root = fr_dict_root(dict_tacacs); talloc_set_destructor(test_ctx, _encode_test_ctx); -- 2.47.3