]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Fix up cond_forbid_groups()
authorNick Porter <nick@portercomputing.co.uk>
Wed, 18 Jan 2023 13:42:43 +0000 (13:42 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 9 Feb 2023 16:55:10 +0000 (10:55 -0600)
src/lib/server/cond_tokenize.c

index c487b158cba283c17ec61bf596244f1ef16eeea7..0e3108d277b15202ef754242dad49995c3e17165 100644 (file)
@@ -879,21 +879,21 @@ done:
 
 static CC_HINT(nonnull) int cond_forbid_groups(tmpl_t *vpt, fr_sbuff_t *in, fr_sbuff_marker_t *m_lhs)
 {
-       if (tmpl_is_list(vpt)) {
+       if (!tmpl_is_attr(vpt) || tmpl_attr_tail_is_unresolved(vpt)) return 0;
+
+       if (tmpl_is_list(vpt) || tmpl_attr_is_list_attr(tmpl_attr_tail(vpt))) {
                fr_strerror_const("Cannot use list references in condition");
                fr_sbuff_set(in, m_lhs);
                return -1;
        }
 
-       if (!tmpl_is_attr(vpt)) return 0;
-
        switch (tmpl_attr_tail_da(vpt)->type) {
        case FR_TYPE_LEAF:
                break;
 
        default:
-               fr_strerror_printf("Nesting types such as groups or TLVs cannot "
-                                  "be used in condition comparisons");
+               fr_strerror_const("Nesting types such as groups or TLVs cannot "
+                                 "be used in condition comparisons");
                fr_sbuff_set(in, m_lhs);
                return -1;
        }