]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
switch keys cannot be unresolved
authorAlan T. DeKok <aland@freeradius.org>
Mon, 24 Mar 2025 10:28:37 +0000 (12:28 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 25 Mar 2025 12:17:47 +0000 (08:17 -0400)
src/lib/unlang/compile.c
src/lib/unlang/switch.c

index 6ffb9599591e04f1cb25038cf286b5c7d0b87309..92268d0a9c1cb01bbaae80acf054fc5ea3018675 100644 (file)
@@ -2722,6 +2722,11 @@ static unlang_t *compile_switch(unlang_t *parent, unlang_compile_t *unlang_ctx,
                goto error;
        }
 
+       if (tmpl_needs_resolving(gext->vpt)) {
+               cf_log_err(cs, "Cannot resolve key for 'switch' statement");
+               goto error;
+       }
+
        if (!tmpl_is_attr(gext->vpt)) {
                if (tmpl_cast_set(gext->vpt, FR_TYPE_STRING) < 0) {
                        cf_log_perr(cs, "Failed setting cast type");
index eb3adecdd471407c6a8955bddab5bfe09877e686..8f0e2593989fd9d03f2662544bb454d5a7b67ee3 100644 (file)
@@ -80,7 +80,6 @@ static unlang_action_t unlang_switch(rlm_rcode_t *p_result, request_t *request,
         *      statement.
         */
        } else if (tmpl_is_xlat(switch_gext->vpt) ||
-                  tmpl_is_xlat_unresolved(switch_gext->vpt) ||
                   tmpl_is_exec(switch_gext->vpt)) {
                char *p;
                ssize_t len;