From: Arran Cudbard-Bell Date: Sat, 9 Nov 2024 14:57:17 +0000 (-0600) Subject: Advance arg in the xlat argument tokenizer... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3dafd5eda718308b67e4431c837f3750a705459c;p=thirdparty%2Ffreeradius-server.git Advance arg in the xlat argument tokenizer... --- diff --git a/src/lib/unlang/xlat_redundant.c b/src/lib/unlang/xlat_redundant.c index bd9b8aa1e5e..8dfe66b78d9 100644 --- a/src/lib/unlang/xlat_redundant.c +++ b/src/lib/unlang/xlat_redundant.c @@ -338,7 +338,7 @@ static int xlat_redundant_instantiate(xlat_inst_ctx_t const *xctx) } static xlat_arg_parser_t const xlat_redundant_args[] = { - { .type = FR_TYPE_VOID }, + { .type = FR_TYPE_VOID, .variadic = XLAT_ARG_VARIADIC_EMPTY_KEEP }, XLAT_ARG_PARSER_TERMINATOR }; diff --git a/src/lib/unlang/xlat_tokenize.c b/src/lib/unlang/xlat_tokenize.c index 038bbf7c826..037257d3ff4 100644 --- a/src/lib/unlang/xlat_tokenize.c +++ b/src/lib/unlang/xlat_tokenize.c @@ -1445,9 +1445,7 @@ fr_slen_t xlat_tokenize_argv(TALLOC_CTX *ctx, xlat_exp_head_t **out, fr_sbuff_t if (comma) { fr_assert(p_rules && p_rules->terminals); - if (fr_sbuff_next_if_char(&our_in, ',')) { - continue; - } + if (fr_sbuff_next_if_char(&our_in, ',')) goto next; if (fr_sbuff_is_char(&our_in, ')')) break; @@ -1469,11 +1467,11 @@ fr_slen_t xlat_tokenize_argv(TALLOC_CTX *ctx, xlat_exp_head_t **out, fr_sbuff_t fr_strerror_const("Unexpected text after argument"); goto error; } - + next: if (!arg->variadic) { arg++; if (arg->type == FR_TYPE_NULL) { - fr_strerror_printf("Too many arguments, expected %u", argc - 1); + fr_strerror_printf("Too many arguments, expected %u additional", argc - 1); goto error; } } diff --git a/src/tests/keywords/urlquote b/src/tests/keywords/urlquote index b93714bf993..2e76e71525f 100644 --- a/src/tests/keywords/urlquote +++ b/src/tests/keywords/urlquote @@ -45,7 +45,7 @@ if (!(result_string == test_string3)) { test_fail } -result_string := "%urlunquote(%%E,123)" +result_string := "%urlunquote('%%E, 123')" # Test decoding invalid encoded string if !(result_string == "") {