From: Arran Cudbard-Bell Date: Sun, 3 Mar 2019 09:06:21 +0000 (+0800) Subject: More precise error messages X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3818302aa3911b0e958b755b75ecb973357bfdd0;p=thirdparty%2Ffreeradius-server.git More precise error messages --- diff --git a/src/lib/server/xlat_tokenize.c b/src/lib/server/xlat_tokenize.c index f4ee840cbc2..43ba4981d8e 100644 --- a/src/lib/server/xlat_tokenize.c +++ b/src/lib/server/xlat_tokenize.c @@ -331,7 +331,7 @@ static inline ssize_t xlat_tokenize_attribute(TALLOC_CTX *ctx, xlat_exp_t **head * than a request qualifier. */ if (err == ATTR_REF_ERROR_INVALID_LIST_QUALIFIER) { - fr_strerror_printf("Unknown module or invalid list qualifier"); + fr_strerror_printf("Unknown expansion function or invalid list qualifier"); } return slen - (p - fmt); /* error somewhere after second character */ } @@ -434,9 +434,23 @@ static ssize_t xlat_tokenize_expansion(TALLOC_CTX *ctx, xlat_exp_t **head, /* * Check for empty expressions %{} %{: %{[ */ - if ((q == (p + 2)) && ((*q == '}') || (*q == ':') || (*q == '['))) { - fr_strerror_printf("Empty expression is invalid"); - return -2; /* error @ third character of format string */ + if (q == (p + 2)) { + switch (*q) { + case '}': + fr_strerror_printf("Empty expression is invalid"); + return -2; /* error @ third character of format string */ + + case ':': + fr_strerror_printf("Missing expansion function or list qualifier"); + return -2; + + case '[': + fr_strerror_printf("Missing attribute name"); + return -2; + + default: + break; + } } /* diff --git a/src/tests/unit/xlat.txt b/src/tests/unit/xlat.txt index 4f6fa919b71..b38ca3ea601 100644 --- a/src/tests/unit/xlat.txt +++ b/src/tests/unit/xlat.txt @@ -8,7 +8,7 @@ data %{Tunnel-Password} # xlat %{foo: bar} -data ERROR offset 2 'Unknown module or invalid list qualifier' +data ERROR offset 2 'Unknown expansion function or invalid list qualifier' xlat %{test:bar} data %{test:bar} @@ -95,16 +95,16 @@ xlat %{} data ERROR offset 2 'Empty expression is invalid' xlat %{:} -data ERROR offset 2 'Empty expression is invalid' +data ERROR offset 2 'Missing expansion function or list qualifier' xlat %{:bar} -data ERROR offset 2 'Empty expression is invalid' +data ERROR offset 2 'Missing expansion function or list qualifier' xlat %{[} -data ERROR offset 2 'Empty expression is invalid' +data ERROR offset 2 'Missing attribute name' xlat %{[baz} -data ERROR offset 2 'Empty expression is invalid' +data ERROR offset 2 'Missing attribute name' xlat %{ } data ERROR offset 2 'Invalid char ' ' in expression'