]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
More precise error messages
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 3 Mar 2019 09:06:21 +0000 (17:06 +0800)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sun, 3 Mar 2019 09:06:21 +0000 (17:06 +0800)
src/lib/server/xlat_tokenize.c
src/tests/unit/xlat.txt

index f4ee840cbc284b467bedc0b50226dad13c44719b..43ba4981d8e2cdec5f7ba9b47e55a66a369ef262 100644 (file)
@@ -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;
+               }
        }
 
        /*
index 4f6fa919b71f1c1e9d938bb01c40ad6aebc21ce0..b38ca3ea601574a41f9a3e534177019d2b9f9191 100644 (file)
@@ -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'