]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
handle the cast of XLAT_TMPL being data
authorAlan T. DeKok <aland@freeradius.org>
Mon, 24 Jan 2022 22:02:07 +0000 (17:02 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 24 Jan 2022 22:09:47 +0000 (17:09 -0500)
src/lib/unlang/xlat_tokenize.c

index 443b1b009307a2b81263fbe1dd798c8a0252abe4..e60581b674ab54a562cd473239787128ab954532 100644 (file)
@@ -1146,6 +1146,13 @@ static ssize_t xlat_print_node(fr_sbuff_t *out, xlat_exp_t const *head, fr_sbuff
                FR_SBUFF_RETURN(fr_value_box_print, out, &node->data, e_rules);
                goto done;
 
+       case XLAT_TMPL:
+               if (tmpl_is_data(node->vpt)) {
+                       FR_SBUFF_RETURN(fr_value_box_print_quoted, out, tmpl_value(node->vpt), node->vpt->quote);
+                       goto done;
+               }
+               break;
+
        case XLAT_ONE_LETTER:
                FR_SBUFF_IN_CHAR_RETURN(out, '%', node->fmt[0]);
                goto done;
@@ -1195,6 +1202,7 @@ static ssize_t xlat_print_node(fr_sbuff_t *out, xlat_exp_t const *head, fr_sbuff
 
        switch (node->type) {
        case XLAT_TMPL:
+               fr_assert(tmpl_is_list(node->vpt) || tmpl_is_attr(node->vpt));
                slen = tmpl_attr_print(out, node->vpt, TMPL_ATTR_REF_PREFIX_NO);
                if (slen < 0) {
                error: