From: Alan T. DeKok Date: Fri, 18 Nov 2022 13:07:41 +0000 (-0500) Subject: allow &request = `exec stuff` X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e751f2f3e21599dec556b316423e230874cb8244;p=thirdparty%2Ffreeradius-server.git allow &request = `exec stuff` --- diff --git a/src/lib/unlang/compile.c b/src/lib/unlang/compile.c index a92c2c956ce..0961cbf7aca 100644 --- a/src/lib/unlang/compile.c +++ b/src/lib/unlang/compile.c @@ -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; diff --git a/src/tests/keywords/all.mk b/src/tests/keywords/all.mk index 25d31605673..471a17210de 100644 --- a/src/tests/keywords/all.mk +++ b/src/tests/keywords/all.mk @@ -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