Skip to content

Commit 7db777e

Browse files
Merge pull request #60 from coreruleset/test/double-colon-test
test: colon in collection arguments
2 parents 704e5b1 + 4156b9b commit 7db777e

11 files changed

Lines changed: 1902 additions & 1505 deletions

g4/SecLangParser.g4

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ stmt:
2929
| comment? rule_script_directive file_path actions?
3030
| comment? rule_script_directive QUOTE file_path QUOTE actions?
3131
| comment? remove_rule_by_id remove_rule_by_id_values+
32-
| comment? string_remove_rules values
33-
| comment? string_remove_rules QUOTE values QUOTE
32+
| comment? string_remove_rules string_remove_rules_values
33+
| comment? string_remove_rules QUOTE string_remove_rules_values QUOTE
3434
| comment? update_target_rules update_target_rules_values update_variables
3535
| comment? update_target_rules QUOTE update_target_rules_values QUOTE update_variables
3636
| comment? update_target_rules update_target_rules_values update_variables PIPE new_target
@@ -151,6 +151,12 @@ string_remove_rules:
151151
| CONFIG_SEC_RULE_REMOVE_BY_TAG # remove_rule_by_tag
152152
;
153153

154+
string_remove_rules_values:
155+
STRING
156+
| VARIABLE_NAME
157+
| COMMA_SEPARATED_STRING
158+
;
159+
154160
update_target_rules:
155161
CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID # update_target_by_id
156162
| CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG # update_target_by_msg
@@ -232,9 +238,8 @@ values:
232238
;
233239

234240
action_ctl_target_value:
235-
(INT | IDENT | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI variable_enum
236-
| (INT | IDENT | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI collection_enum (COLON collection_value)?
237-
241+
(ctl_id | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI variable_enum
242+
| (ctl_id | SINGLE_QUOTE string_literal SINGLE_QUOTE | VARIABLE_NAME) SEMI collection_enum (COLON collection_value)?
238243
;
239244

240245
update_target_rules_values:
@@ -493,4 +498,9 @@ assignment:
493498

494499
var_assignment:
495500
VAR_ASSIGNMENT
501+
;
502+
503+
ctl_id:
504+
INT
505+
| IDENT
496506
;

listener.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type ParserResult struct {
2828
rangeEndEvents []int
2929
setvarCollections []string
3030
setvarNames []string
31-
setvarOperations []string
31+
assignmentOperations []string
3232
}
3333

3434
type TreeShapeListener struct {
@@ -104,7 +104,7 @@ func (l *TreeShapeListener) EnterRemove_rule_by_tag(ctx *parser.Remove_rule_by_t
104104
l.results.directiveList = append(l.results.directiveList, ctx.GetText())
105105
}
106106

107-
func (l *TreeShapeListener) EnterValues(ctx *parser.ValuesContext) {
107+
func (l *TreeShapeListener) EnterString_remove_rules_values(ctx *parser.String_remove_rules_valuesContext) {
108108
l.results.directiveValues = append(l.results.directiveValues, ctx.GetText())
109109
}
110110

@@ -169,9 +169,17 @@ func (l *TreeShapeListener) EnterSetvar_stmt(ctx *parser.Setvar_stmtContext) {
169169
}
170170

171171
func (l *TreeShapeListener) EnterAssignment(ctx *parser.AssignmentContext) {
172-
l.results.setvarOperations = append(l.results.setvarOperations, ctx.GetText())
172+
l.results.assignmentOperations = append(l.results.assignmentOperations, ctx.GetText())
173173
}
174174

175175
func (l *TreeShapeListener) EnterVar_assignment(ctx *parser.Var_assignmentContext) {
176176
l.results.directiveValues = append(l.results.directiveValues, ctx.GetText())
177177
}
178+
179+
func (l *TreeShapeListener) EnterCtl_action(ctx *parser.Ctl_actionContext) {
180+
l.results.directiveValues = append(l.results.directiveValues, ctx.GetText())
181+
}
182+
183+
func (l *TreeShapeListener) EnterCtl_id(ctx *parser.Ctl_idContext) {
184+
l.results.directiveValues = append(l.results.directiveValues, ctx.GetText())
185+
}

parser/seclang_parser.go

Lines changed: 986 additions & 786 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/seclangparser_base_listener.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser/seclangparser_listener.go

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

parser_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,10 +342,23 @@ var checkOutputTests = map[string]struct {
342342
directiveList: []string{"SecRule", "SecRule", "SecRule"},
343343
setvarCollections: []string{"tx", "tx", "tx", "tx", "tx", "tx"},
344344
setvarNames: []string{"var1", "var2", "var2", "var2", "header_name_920450_%{tx.0}", "inbound_anomaly_score_pl1"},
345-
setvarOperations: []string{"=", "=", "=+", "=-", "=", "=+"},
345+
assignmentOperations: []string{"=", "=", "=+", "=-", "=", "=+"},
346346
directiveValues: []string{"bar", "0", "2", "1", "/%{tx.0}/", "%{tx.critical_anomaly_score}"},
347347
},
348348
},
349+
"testdata/test_43_colon.conf": {
350+
0,
351+
"",
352+
ParserResult{
353+
collections: []string{"TX", "TX"},
354+
operatorList: []string{"unconditionalMatch"},
355+
directiveList: []string{"SecRule"},
356+
collectionArgs: []string{"paramcounter_ARGS_NAMES:folders.folders", "paramcounter_ARGS_NAMES:folders.folders"},
357+
directiveValues: []string{"ruleRemoveTargetById", "921180"},
358+
// directiveValues: []string{"ruleRemoveTargetById", "921180;TX:paramcounter_ARGS_NAMES:folders.folders", "921180"},
359+
assignmentOperations: []string{"="},
360+
},
361+
},
349362
}
350363

351364
func TestSecLang(t *testing.T) {

0 commit comments

Comments
 (0)