From: Arran Cudbard-Bell Date: Tue, 15 Nov 2022 00:06:31 +0000 (-0600) Subject: More verbose sanity checks X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ceb782ac76424d883aaa5bd9017d94cad6b05cc8;p=thirdparty%2Ffreeradius-server.git More verbose sanity checks --- diff --git a/src/bin/unit_test_attribute.c b/src/bin/unit_test_attribute.c index 086e3732485..8a724dd34f6 100644 --- a/src/bin/unit_test_attribute.c +++ b/src/bin/unit_test_attribute.c @@ -1580,7 +1580,7 @@ static size_t command_decode_pair(command_result_t *result, command_file_ctx_t * RETURN_OK_WITH_ERROR(); } if ((size_t)slen > (size_t)(to_dec_end - to_dec)) { - fr_perror("Internal sanity check failed at %d", __LINE__); + fr_perror("%s: Internal sanity check failed at %d", __FUNCTION__, __LINE__); ASAN_UNPOISON_MEMORY_REGION(to_dec_end, COMMAND_OUTPUT_MAX - slen); CLEAR_TEST_POINT(cc); RETURN_COMMAND_ERROR(); diff --git a/src/lib/server/cf_file.c b/src/lib/server/cf_file.c index 92213efcff0..f931cfe94c4 100644 --- a/src/lib/server/cf_file.c +++ b/src/lib/server/cf_file.c @@ -2461,7 +2461,7 @@ do_frame: * One last sanity check. */ if (frame->type != CF_STACK_FILE) { - cf_log_err(frame->current, "Internal sanity check failed"); + cf_log_err(frame->current, "%s: Internal sanity check failed", __FUNCTION__); goto pop_stack; } #endif diff --git a/src/lib/server/command.c b/src/lib/server/command.c index e7a8535eda5..fcb6790fbdc 100644 --- a/src/lib/server/command.c +++ b/src/lib/server/command.c @@ -2099,7 +2099,7 @@ static int syntax_str_to_argv(int start_argc, fr_cmd_argv_t *start, fr_cmd_info_ /* * Not done yet! */ - fr_strerror_const("Internal sanity check failed"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; next: diff --git a/src/lib/server/cond_tokenize.c b/src/lib/server/cond_tokenize.c index 50d55e9b83a..6e55f43f644 100644 --- a/src/lib/server/cond_tokenize.c +++ b/src/lib/server/cond_tokenize.c @@ -312,7 +312,7 @@ int fr_cond_promote_types(fr_cond_t *c, fr_sbuff_t *in, fr_sbuff_marker_t *m_lhs break; default: - fr_strerror_const("Internal sanity check failed 1"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; } } @@ -751,7 +751,7 @@ static int cond_normalise(TALLOC_CTX *ctx, fr_token_t lhs_type, fr_cond_t **c_ou break; default: - fr_assert_fail("Internal sanity check failed 2"); + fr_assert_fail("%s: Internal sanity check failed", __FUNCTION__); return -1; } diff --git a/src/lib/unlang/compile.c b/src/lib/unlang/compile.c index aaba8c3eff4..cdd5f295e7f 100644 --- a/src/lib/unlang/compile.c +++ b/src/lib/unlang/compile.c @@ -2127,9 +2127,7 @@ static unlang_t *compile_children(unlang_group_t *g, unlang_compile_t *unlang_ct } goto add_child; - } - - if (cf_item_is_pair(ci)) { + } else if (cf_item_is_pair(ci)) { char const *attr; CONF_PAIR *cp = cf_item_to_pair(ci); @@ -2172,11 +2170,11 @@ static unlang_t *compile_children(unlang_group_t *g, unlang_compile_t *unlang_ct } goto add_child; - } /* was CONF_PAIR */ - - cf_log_err(ci, "Internal sanity check failed in unlang compile."); - talloc_free(c); - return NULL; + } else { + cf_log_err(ci, "Asked to compile unknown conf type"); + talloc_free(c); + return NULL; + } add_child: if (single == UNLANG_IGNORE) continue; @@ -4390,8 +4388,10 @@ static unlang_t *compile_item(unlang_t *parent, unlang_compile_t *unlang_ctx, CO c->number = unlang_number++; if (!fr_rb_insert(unlang_instruction_tree, c)) { + unlang_t *ex = fr_rb_find(unlang_instruction_tree, c); + cf_log_err(ci, "Instruction \"%s\" number %i conflicts with \"%s\" number %i", + c->debug_name, c->number, ex->debug_name, ex->number); talloc_free(c); - cf_log_err(ci, "Internal sanity check failed"); return NULL; } @@ -4409,9 +4409,7 @@ static unlang_t *compile_item(unlang_t *parent, unlang_compile_t *unlang_ctx, CO /* else it's something like sql { fail = 1 ...} */ goto check_for_module; - } - - if (cf_item_is_pair(ci)) { + } else if (cf_item_is_pair(ci)) { /* * Else it's a module reference such as "sql", OR * one of the few bare keywords that we allow. @@ -4454,11 +4452,11 @@ static unlang_t *compile_item(unlang_t *parent, unlang_compile_t *unlang_ctx, CO } goto check_for_module; + } else { + cf_log_err(ci, "Asked to compile unknown conf type"); + return NULL; /* who knows what it is... */ } - cf_log_err(ci, "Internal sanity check failed in compile_item()"); - return NULL; /* who knows what it is... */ - check_for_module: /* * We now have a name. It can be one of two forms. A diff --git a/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c b/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c index 83b61abaea0..e0adee79dfd 100644 --- a/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c +++ b/src/modules/rlm_eap/types/rlm_eap_mschapv2/rlm_eap_mschapv2.c @@ -256,7 +256,7 @@ static int eap_mschapv2_compose(rlm_eap_mschapv2_t const *inst, request_t *reque */ memcpy((eap_round->request->type.data + 4), reply->vp_strvalue + 1, reply->vp_length - 1); } else { - RERROR("Internal sanity check failed"); + RERROR("%s: Internal sanity check failed", __FUNCTION__); return -1; } diff --git a/src/protocols/dhcpv4/encode.c b/src/protocols/dhcpv4/encode.c index 160e3b38a27..c5518512082 100644 --- a/src/protocols/dhcpv4/encode.c +++ b/src/protocols/dhcpv4/encode.c @@ -435,7 +435,7 @@ static ssize_t encode_option_data(fr_dbuff_t *dbuff, break; default: - fr_strerror_printf("Internal sanity check failed"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; } } diff --git a/src/protocols/dhcpv6/encode.c b/src/protocols/dhcpv6/encode.c index 98ebe4c1fd2..07beec80667 100644 --- a/src/protocols/dhcpv6/encode.c +++ b/src/protocols/dhcpv6/encode.c @@ -415,7 +415,7 @@ static ssize_t encode_option_data(fr_dbuff_t *dbuff, break; default: - fr_strerror_printf("Internal sanity check failed"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; } } diff --git a/src/protocols/dns/encode.c b/src/protocols/dns/encode.c index 63c484119d6..51f0281e46a 100644 --- a/src/protocols/dns/encode.c +++ b/src/protocols/dns/encode.c @@ -264,7 +264,7 @@ static ssize_t encode_option_data(fr_dbuff_t *dbuff, break; default: - fr_strerror_printf("Internal sanity check failed"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; } } diff --git a/src/protocols/radius/decode.c b/src/protocols/radius/decode.c index 4f4114de0db..7e44c940d7e 100644 --- a/src/protocols/radius/decode.c +++ b/src/protocols/radius/decode.c @@ -309,7 +309,7 @@ int fr_radius_decode_tlv_ok(uint8_t const *data, size_t length, size_t dv_type, break; default: - fr_strerror_const("Internal sanity check failed"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; } @@ -329,7 +329,7 @@ int fr_radius_decode_tlv_ok(uint8_t const *data, size_t length, size_t dv_type, default: - fr_strerror_const("Internal sanity check failed"); + fr_strerror_printf("%s: Internal sanity check failed", __FUNCTION__); return -1; }