]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
allow &request = `exec stuff`
authorAlan T. DeKok <aland@freeradius.org>
Fri, 18 Nov 2022 13:07:41 +0000 (08:07 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 21 Nov 2022 15:51:05 +0000 (10:51 -0500)
src/lib/unlang/compile.c
src/tests/keywords/all.mk

index a92c2c956ced6e16b8451cf4d88b7eb43a7855dc..0961cbf7aca4460e186fc4255e18a66cd40dfcb1 100644 (file)
@@ -1497,10 +1497,17 @@ static unlang_t *compile_update_to_edit(unlang_t *parent, unlang_compile_t *unla
                        goto pair_op;
 
                case T_OP_EQ:
+                       /*
+                        *      Allow &list = "foo"
+                        */
                        if (!attr) {
-                       fail_attr:
-                               cf_log_err(cp, "Invalid operator for list assignment");
-                               return NULL;
+                               if (!value) {
+                                       cf_log_err(cp, "Missing value");
+                                       return NULL;
+                               }
+
+                               rcode = edit_pair_alloc(group, cp, list, op, value);
+                               break;
                        }
 
                pair_op:
@@ -1528,7 +1535,10 @@ static unlang_t *compile_update_to_edit(unlang_t *parent, unlang_compile_t *unla
                        op = T_OP_CMP_EQ;
 
                filter:
-                       if (!attr) goto fail_attr;
+                       if (!attr) {
+                               cf_log_err(cp, "Invalid operator for list assignment");
+                               return NULL;
+                       }
 
                        rcode = edit_section_alloc(group, &child, list, T_OP_SUB_EQ);
                        if (rcode < 0) break;
index 25d31605673b6fe820b04958b86abf576829df20..471a17210dea6648082251889d9bbdf0d5c0687d 100644 (file)
@@ -42,9 +42,9 @@ test.keywords.help: TEST_KEYWORDS_HELP += test.keywords.${1}
 #
 #  All of the "update" tests which should also be run with "-S rewrite_update=yes"
 #
-KEYWORD_UPDATE_TESTS := update-attr-ref-null update-error-3 update-group-error update-filter update-list-error  update-null-value-assign update-remove-index update-exec
+KEYWORD_UPDATE_TESTS := update-attr-ref-null update-error-3 update-group-error update-filter update-list-error  update-null-value-assign update-remove-index 
 
-KEYWORD_UPDATE_REWRITE_TESTS := update-all update-array update-delete update-remove-any update-group update-hex update-remove-value update-index update-remove-list update-prepend unknown-update  update-error update-error-2 update-exec-error update-list-null-rhs
+KEYWORD_UPDATE_REWRITE_TESTS := update-all update-array update-delete update-remove-any update-group update-hex update-remove-value update-index update-remove-list update-prepend unknown-update  update-error update-error-2 update-exec-error update-list-null-rhs update-exec
 
 #
 #  Migration support.  Some of the tests don't run under the new