From: Alan T. DeKok Date: Wed, 22 Jun 2022 12:31:04 +0000 (-0400) Subject: minor cleanups X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0c23fc28edef191092c658cf67b9f920c95a0df;p=thirdparty%2Ffreeradius-server.git minor cleanups --- diff --git a/src/lib/unlang/xlat_expr.c b/src/lib/unlang/xlat_expr.c index 73bbd96c642..d774b5271c4 100644 --- a/src/lib/unlang/xlat_expr.c +++ b/src/lib/unlang/xlat_expr.c @@ -1716,30 +1716,31 @@ static ssize_t tokenize_regex_rhs(xlat_exp_head_t *head, xlat_exp_t **out, fr_sb FR_SBUFF_ERROR_RETURN_ADJ(&our_in, -slen - 2); /* account for // */ } - node->vpt = vpt; - node->quote = T_SOLIDUS_QUOTED_STRING; - node->fmt = vpt->name; - - /* - * Resolve things if we can. - */ - if (tmpl_is_unresolved(node->vpt) && (tmpl_resolve(node->vpt, NULL) < 0)) goto error; - - node->flags.pure = tmpl_is_data(node->vpt); - node->flags.needs_resolving = tmpl_needs_resolving(node->vpt); - xlat_flags_merge(&head->flags, &node->flags); - fr_sbuff_skip_whitespace(&our_in); /* * Try to compile regular expressions, but only if * they're not being dynamically expanded. */ - if (tmpl_is_regex_uncompiled(node->vpt) && !tmpl_is_regex_xlat(node->vpt)) { - slen = tmpl_regex_compile(node->vpt, true); + if (!tmpl_contains_xlat(vpt)) { + slen = tmpl_regex_compile(vpt, true); if (slen <= 0) goto error; + + } else if (tmpl_is_unresolved(vpt)) { + /* + * Resolve attributes in xlat'd regular expressions. + */ + if (tmpl_resolve(vpt, NULL) < 0) goto error; } + node->vpt = vpt; + node->quote = T_SOLIDUS_QUOTED_STRING; + node->fmt = vpt->name; + + node->flags.pure = !tmpl_contains_xlat(node->vpt); + node->flags.needs_resolving = tmpl_needs_resolving(node->vpt); + xlat_flags_merge(&head->flags, &node->flags); + #ifdef __clang_analyzer__ if (!node) return 0; /* shut up stupid analyzer */ #else