From 3bdd96c603327a23bc8a295a76fb10e8e6197a16 Mon Sep 17 00:00:00 2001 From: Felipe Zimmerle Date: Fri, 5 Jun 2020 11:51:45 -0300 Subject: [PATCH] Removes method isDisruptive from Action class --- headers/modsecurity/actions/action.h | 5 - src/actions/disruptive/disruptive_action.h | 3 - src/parser/seclang-parser.cc | 1509 ++++++++++---------- src/parser/seclang-parser.yy | 3 +- src/rule_with_actions.cc | 13 +- 5 files changed, 764 insertions(+), 769 deletions(-) diff --git a/headers/modsecurity/actions/action.h b/headers/modsecurity/actions/action.h index 4dd693a6..17aa922a 100644 --- a/headers/modsecurity/actions/action.h +++ b/headers/modsecurity/actions/action.h @@ -75,11 +75,6 @@ class Action { } - virtual bool isDisruptive() { - return false; - } - - const std::string *getName() const noexcept { return &m_name; } diff --git a/src/actions/disruptive/disruptive_action.h b/src/actions/disruptive/disruptive_action.h index 5e139d5b..125ca146 100644 --- a/src/actions/disruptive/disruptive_action.h +++ b/src/actions/disruptive/disruptive_action.h @@ -31,9 +31,6 @@ namespace disruptive { class ActionDisruptive : public ActionAllowedAsSecDefaultAction { public: - bool isDisruptive() override { - return true; - } }; diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc index 433c0ee6..aa1f402c 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -2409,7 +2409,8 @@ namespace yy { int secRuleDefinedPhase = -1; for (actions::Action *a : *actions) { actions::Phase *phase = dynamic_cast(a); - if (a->isDisruptive() == true && dynamic_cast(a) == NULL) { + if (dynamic_cast(a) != NULL + && dynamic_cast(a) == NULL) { hasDisruptive = true; } if (phase != NULL) { @@ -2454,78 +2455,78 @@ namespace yy { delete actions; } -#line 2458 "seclang-parser.cc" +#line 2459 "seclang-parser.cc" break; case 80: // expression: "CONFIG_DIR_SEC_MARKER" -#line 1235 "seclang-parser.yy" +#line 1236 "seclang-parser.yy" { driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as < std::string > ()), /* file name */ std::unique_ptr(new std::string(*yystack_[0].location.end.filename)), /* line number */ yystack_[0].location.end.line ); } -#line 2469 "seclang-parser.cc" +#line 2470 "seclang-parser.cc" break; case 81: // expression: "CONFIG_DIR_RULE_ENG" "CONFIG_VALUE_OFF" -#line 1242 "seclang-parser.yy" +#line 1243 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::DisabledRuleEngine; } -#line 2477 "seclang-parser.cc" +#line 2478 "seclang-parser.cc" break; case 82: // expression: "CONFIG_DIR_RULE_ENG" "CONFIG_VALUE_ON" -#line 1246 "seclang-parser.yy" +#line 1247 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::EnabledRuleEngine; } -#line 2485 "seclang-parser.cc" +#line 2486 "seclang-parser.cc" break; case 83: // expression: "CONFIG_DIR_RULE_ENG" "CONFIG_VALUE_DETC" -#line 1250 "seclang-parser.yy" +#line 1251 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::DetectionOnlyRuleEngine; } -#line 2493 "seclang-parser.cc" +#line 2494 "seclang-parser.cc" break; case 84: // expression: "CONFIG_DIR_REQ_BODY" "CONFIG_VALUE_ON" -#line 1254 "seclang-parser.yy" +#line 1255 "seclang-parser.yy" { driver.m_secRequestBodyAccess = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 2501 "seclang-parser.cc" +#line 2502 "seclang-parser.cc" break; case 85: // expression: "CONFIG_DIR_REQ_BODY" "CONFIG_VALUE_OFF" -#line 1258 "seclang-parser.yy" +#line 1259 "seclang-parser.yy" { driver.m_secRequestBodyAccess = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 2509 "seclang-parser.cc" +#line 2510 "seclang-parser.cc" break; case 86: // expression: "CONFIG_DIR_RES_BODY" "CONFIG_VALUE_ON" -#line 1262 "seclang-parser.yy" +#line 1263 "seclang-parser.yy" { driver.m_secResponseBodyAccess = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 2517 "seclang-parser.cc" +#line 2518 "seclang-parser.cc" break; case 87: // expression: "CONFIG_DIR_RES_BODY" "CONFIG_VALUE_OFF" -#line 1266 "seclang-parser.yy" +#line 1267 "seclang-parser.yy" { driver.m_secResponseBodyAccess = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 2525 "seclang-parser.cc" +#line 2526 "seclang-parser.cc" break; case 88: // expression: "CONFIG_SEC_ARGUMENT_SEPARATOR" -#line 1270 "seclang-parser.yy" +#line 1271 "seclang-parser.yy" { if (yystack_[0].value.as < std::string > ().length() != 1) { driver.error(yystack_[1].location, "Argument separator should be set to a single character."); @@ -2534,259 +2535,259 @@ namespace yy { driver.m_secArgumentSeparator.m_value = yystack_[0].value.as < std::string > (); driver.m_secArgumentSeparator.m_set = true; } -#line 2538 "seclang-parser.cc" +#line 2539 "seclang-parser.cc" break; case 89: // expression: "CONFIG_COMPONENT_SIG" -#line 1279 "seclang-parser.yy" +#line 1280 "seclang-parser.yy" { driver.m_components.push_back(yystack_[0].value.as < std::string > ()); } -#line 2546 "seclang-parser.cc" +#line 2547 "seclang-parser.cc" break; case 90: // expression: "CONFIG_CONN_ENGINE" "CONFIG_VALUE_ON" -#line 1283 "seclang-parser.yy" +#line 1284 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecConnEngine is not yet supported."); YYERROR; } -#line 2555 "seclang-parser.cc" +#line 2556 "seclang-parser.cc" break; case 91: // expression: "CONFIG_CONN_ENGINE" "CONFIG_VALUE_OFF" -#line 1288 "seclang-parser.yy" +#line 1289 "seclang-parser.yy" { } -#line 2562 "seclang-parser.cc" +#line 2563 "seclang-parser.cc" break; case 92: // expression: "CONFIG_SEC_WEB_APP_ID" -#line 1291 "seclang-parser.yy" +#line 1292 "seclang-parser.yy" { driver.m_secWebAppId.m_value = yystack_[0].value.as < std::string > (); driver.m_secWebAppId.m_set = true; } -#line 2571 "seclang-parser.cc" +#line 2572 "seclang-parser.cc" break; case 93: // expression: "CONFIG_SEC_SERVER_SIG" -#line 1296 "seclang-parser.yy" +#line 1297 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecServerSignature is not supported."); YYERROR; } -#line 2580 "seclang-parser.cc" +#line 2581 "seclang-parser.cc" break; case 94: // expression: "CONFIG_SEC_CACHE_TRANSFORMATIONS" -#line 1301 "seclang-parser.yy" +#line 1302 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecCacheTransformations is not supported."); YYERROR; } -#line 2589 "seclang-parser.cc" +#line 2590 "seclang-parser.cc" break; case 95: // expression: "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" "CONFIG_VALUE_ON" -#line 1306 "seclang-parser.yy" +#line 1307 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecDisableBackendCompression is not supported."); YYERROR; } -#line 2598 "seclang-parser.cc" +#line 2599 "seclang-parser.cc" break; case 96: // expression: "CONFIG_SEC_DISABLE_BACKEND_COMPRESS" "CONFIG_VALUE_OFF" -#line 1311 "seclang-parser.yy" +#line 1312 "seclang-parser.yy" { } -#line 2605 "seclang-parser.cc" +#line 2606 "seclang-parser.cc" break; case 97: // expression: "CONFIG_CONTENT_INJECTION" "CONFIG_VALUE_ON" -#line 1314 "seclang-parser.yy" +#line 1315 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecContentInjection is not yet supported."); YYERROR; } -#line 2614 "seclang-parser.cc" +#line 2615 "seclang-parser.cc" break; case 98: // expression: "CONFIG_CONTENT_INJECTION" "CONFIG_VALUE_OFF" -#line 1319 "seclang-parser.yy" +#line 1320 "seclang-parser.yy" { } -#line 2621 "seclang-parser.cc" +#line 2622 "seclang-parser.cc" break; case 99: // expression: "CONFIG_SEC_CHROOT_DIR" -#line 1322 "seclang-parser.yy" +#line 1323 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecChrootDir is not supported."); YYERROR; } -#line 2630 "seclang-parser.cc" +#line 2631 "seclang-parser.cc" break; case 100: // expression: "CONFIG_SEC_HASH_ENGINE" "CONFIG_VALUE_ON" -#line 1327 "seclang-parser.yy" +#line 1328 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecHashEngine is not yet supported."); YYERROR; } -#line 2639 "seclang-parser.cc" +#line 2640 "seclang-parser.cc" break; case 101: // expression: "CONFIG_SEC_HASH_ENGINE" "CONFIG_VALUE_OFF" -#line 1332 "seclang-parser.yy" +#line 1333 "seclang-parser.yy" { } -#line 2646 "seclang-parser.cc" +#line 2647 "seclang-parser.cc" break; case 102: // expression: "CONFIG_SEC_HASH_KEY" -#line 1335 "seclang-parser.yy" +#line 1336 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashKey is not yet supported."); YYERROR; } -#line 2655 "seclang-parser.cc" +#line 2656 "seclang-parser.cc" break; case 103: // expression: "CONFIG_SEC_HASH_PARAM" -#line 1340 "seclang-parser.yy" +#line 1341 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashParam is not yet supported."); YYERROR; } -#line 2664 "seclang-parser.cc" +#line 2665 "seclang-parser.cc" break; case 104: // expression: "CONFIG_SEC_HASH_METHOD_RX" -#line 1345 "seclang-parser.yy" +#line 1346 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashMethodRx is not yet supported."); YYERROR; } -#line 2673 "seclang-parser.cc" +#line 2674 "seclang-parser.cc" break; case 105: // expression: "CONFIG_SEC_HASH_METHOD_PM" -#line 1350 "seclang-parser.yy" +#line 1351 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashMethodPm is not yet supported."); YYERROR; } -#line 2682 "seclang-parser.cc" +#line 2683 "seclang-parser.cc" break; case 106: // expression: "CONFIG_DIR_GSB_DB" -#line 1355 "seclang-parser.yy" +#line 1356 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecGsbLookupDb is not supported."); YYERROR; } -#line 2691 "seclang-parser.cc" +#line 2692 "seclang-parser.cc" break; case 107: // expression: "CONFIG_SEC_GUARDIAN_LOG" -#line 1360 "seclang-parser.yy" +#line 1361 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecGuardianLog is not supported."); YYERROR; } -#line 2700 "seclang-parser.cc" +#line 2701 "seclang-parser.cc" break; case 108: // expression: "CONFIG_SEC_INTERCEPT_ON_ERROR" "CONFIG_VALUE_ON" -#line 1365 "seclang-parser.yy" +#line 1366 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecInterceptOnError is not yet supported."); YYERROR; } -#line 2709 "seclang-parser.cc" +#line 2710 "seclang-parser.cc" break; case 109: // expression: "CONFIG_SEC_INTERCEPT_ON_ERROR" "CONFIG_VALUE_OFF" -#line 1370 "seclang-parser.yy" +#line 1371 "seclang-parser.yy" { } -#line 2716 "seclang-parser.cc" +#line 2717 "seclang-parser.cc" break; case 110: // expression: "CONFIG_SEC_CONN_R_STATE_LIMIT" -#line 1373 "seclang-parser.yy" +#line 1374 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecConnReadStateLimit is not yet supported."); YYERROR; } -#line 2725 "seclang-parser.cc" +#line 2726 "seclang-parser.cc" break; case 111: // expression: "CONFIG_SEC_CONN_W_STATE_LIMIT" -#line 1378 "seclang-parser.yy" +#line 1379 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecConnWriteStateLimit is not yet supported."); YYERROR; } -#line 2734 "seclang-parser.cc" +#line 2735 "seclang-parser.cc" break; case 112: // expression: "CONFIG_SEC_SENSOR_ID" -#line 1383 "seclang-parser.yy" +#line 1384 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecSensorId is not yet supported."); YYERROR; } -#line 2743 "seclang-parser.cc" +#line 2744 "seclang-parser.cc" break; case 113: // expression: "CONFIG_SEC_RULE_INHERITANCE" "CONFIG_VALUE_ON" -#line 1388 "seclang-parser.yy" +#line 1389 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecRuleInheritance is not yet supported."); YYERROR; } -#line 2752 "seclang-parser.cc" +#line 2753 "seclang-parser.cc" break; case 114: // expression: "CONFIG_SEC_RULE_INHERITANCE" "CONFIG_VALUE_OFF" -#line 1393 "seclang-parser.yy" +#line 1394 "seclang-parser.yy" { } -#line 2759 "seclang-parser.cc" +#line 2760 "seclang-parser.cc" break; case 115: // expression: "CONFIG_SEC_RULE_PERF_TIME" -#line 1396 "seclang-parser.yy" +#line 1397 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecRulePerfTime is not yet supported."); YYERROR; } -#line 2768 "seclang-parser.cc" +#line 2769 "seclang-parser.cc" break; case 116: // expression: "CONFIG_SEC_STREAM_IN_BODY_INSPECTION" -#line 1401 "seclang-parser.yy" +#line 1402 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecStreamInBodyInspection is not supported."); YYERROR; } -#line 2777 "seclang-parser.cc" +#line 2778 "seclang-parser.cc" break; case 117: // expression: "CONFIG_SEC_STREAM_OUT_BODY_INSPECTION" -#line 1406 "seclang-parser.yy" +#line 1407 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecStreamOutBodyInspection is not supported."); YYERROR; } -#line 2786 "seclang-parser.cc" +#line 2787 "seclang-parser.cc" break; case 118: // expression: "CONFIG_SEC_RULE_REMOVE_BY_ID" -#line 1411 "seclang-parser.yy" +#line 1412 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.load(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2799,11 +2800,11 @@ namespace yy { YYERROR; } } -#line 2803 "seclang-parser.cc" +#line 2804 "seclang-parser.cc" break; case 119: // expression: "CONFIG_SEC_RULE_REMOVE_BY_TAG" -#line 1424 "seclang-parser.yy" +#line 1425 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2816,11 +2817,11 @@ namespace yy { YYERROR; } } -#line 2820 "seclang-parser.cc" +#line 2821 "seclang-parser.cc" break; case 120: // expression: "CONFIG_SEC_RULE_REMOVE_BY_MSG" -#line 1437 "seclang-parser.yy" +#line 1438 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2833,11 +2834,11 @@ namespace yy { YYERROR; } } -#line 2837 "seclang-parser.cc" +#line 2838 "seclang-parser.cc" break; case 121: // expression: "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG" variables_pre_process -#line 1450 "seclang-parser.yy" +#line 1451 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as < std::string > (), std::move(yystack_[0].value.as < std::unique_ptr > > > ()), &error) == false) { @@ -2850,11 +2851,11 @@ namespace yy { YYERROR; } } -#line 2854 "seclang-parser.cc" +#line 2855 "seclang-parser.cc" break; case 122: // expression: "CONFIG_SEC_RULE_UPDATE_TARGET_BY_MSG" variables_pre_process -#line 1463 "seclang-parser.yy" +#line 1464 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadUpdateTargetByMsg(yystack_[1].value.as < std::string > (), std::move(yystack_[0].value.as < std::unique_ptr > > > ()), &error) == false) { @@ -2867,11 +2868,11 @@ namespace yy { YYERROR; } } -#line 2871 "seclang-parser.cc" +#line 2872 "seclang-parser.cc" break; case 123: // expression: "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID" variables_pre_process -#line 1476 "seclang-parser.yy" +#line 1477 "seclang-parser.yy" { std::string error; double ruleId; @@ -2897,11 +2898,11 @@ namespace yy { YYERROR; } } -#line 2901 "seclang-parser.cc" +#line 2902 "seclang-parser.cc" break; case 124: // expression: "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID" actions -#line 1502 "seclang-parser.yy" +#line 1503 "seclang-parser.yy" { std::string error; double ruleId; @@ -2928,11 +2929,11 @@ namespace yy { YYERROR; } } -#line 2932 "seclang-parser.cc" +#line 2933 "seclang-parser.cc" break; case 125: // expression: "CONFIG_DIR_DEBUG_LVL" -#line 1530 "seclang-parser.yy" +#line 1531 "seclang-parser.yy" { if (driver.m_debugLog != NULL) { driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as < std::string > ().c_str())); @@ -2944,11 +2945,11 @@ namespace yy { YYERROR; } } -#line 2948 "seclang-parser.cc" +#line 2949 "seclang-parser.cc" break; case 126: // expression: "CONFIG_DIR_DEBUG_LOG" -#line 1542 "seclang-parser.yy" +#line 1543 "seclang-parser.yy" { if (driver.m_debugLog != NULL) { std::string error; @@ -2967,11 +2968,11 @@ namespace yy { YYERROR; } } -#line 2971 "seclang-parser.cc" +#line 2972 "seclang-parser.cc" break; case 127: // expression: "CONFIG_DIR_GEO_DB" -#line 1562 "seclang-parser.yy" +#line 1563 "seclang-parser.yy" { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) std::string err; @@ -2998,38 +2999,38 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 3002 "seclang-parser.cc" +#line 3003 "seclang-parser.cc" break; case 128: // expression: "CONFIG_DIR_ARGS_LIMIT" -#line 1589 "seclang-parser.yy" +#line 1590 "seclang-parser.yy" { driver.m_argumentsLimit.m_set = true; driver.m_argumentsLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3011 "seclang-parser.cc" +#line 3012 "seclang-parser.cc" break; case 129: // expression: "CONFIG_DIR_REQ_BODY_LIMIT" -#line 1595 "seclang-parser.yy" +#line 1596 "seclang-parser.yy" { driver.m_requestBodyLimit.m_set = true; driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3020 "seclang-parser.cc" +#line 3021 "seclang-parser.cc" break; case 130: // expression: "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT" -#line 1600 "seclang-parser.yy" +#line 1601 "seclang-parser.yy" { driver.m_requestBodyNoFilesLimit.m_set = true; driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3029 "seclang-parser.cc" +#line 3030 "seclang-parser.cc" break; case 131: // expression: "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT" -#line 1605 "seclang-parser.yy" +#line 1606 "seclang-parser.yy" { std::stringstream ss; ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer "; @@ -3038,68 +3039,68 @@ namespace yy { driver.error(yystack_[1].location, ss.str()); YYERROR; } -#line 3042 "seclang-parser.cc" +#line 3043 "seclang-parser.cc" break; case 132: // expression: "CONFIG_DIR_RES_BODY_LIMIT" -#line 1614 "seclang-parser.yy" +#line 1615 "seclang-parser.yy" { driver.m_responseBodyLimit.m_set = true; driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3051 "seclang-parser.cc" +#line 3052 "seclang-parser.cc" break; case 133: // expression: "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" "CONFIG_VALUE_PROCESS_PARTIAL" -#line 1619 "seclang-parser.yy" +#line 1620 "seclang-parser.yy" { driver.m_requestBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 3059 "seclang-parser.cc" +#line 3060 "seclang-parser.cc" break; case 134: // expression: "CONFIG_DIR_REQ_BODY_LIMIT_ACTION" "CONFIG_VALUE_REJECT" -#line 1623 "seclang-parser.yy" +#line 1624 "seclang-parser.yy" { driver.m_requestBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::RejectBodyLimitAction; } -#line 3067 "seclang-parser.cc" +#line 3068 "seclang-parser.cc" break; case 135: // expression: "CONFIG_DIR_RES_BODY_LIMIT_ACTION" "CONFIG_VALUE_PROCESS_PARTIAL" -#line 1627 "seclang-parser.yy" +#line 1628 "seclang-parser.yy" { driver.m_responseBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 3075 "seclang-parser.cc" +#line 3076 "seclang-parser.cc" break; case 136: // expression: "CONFIG_DIR_RES_BODY_LIMIT_ACTION" "CONFIG_VALUE_REJECT" -#line 1631 "seclang-parser.yy" +#line 1632 "seclang-parser.yy" { driver.m_responseBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::RejectBodyLimitAction; } -#line 3083 "seclang-parser.cc" +#line 3084 "seclang-parser.cc" break; case 137: // expression: "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" "CONFIG_VALUE_ABORT" -#line 1635 "seclang-parser.yy" +#line 1636 "seclang-parser.yy" { driver.m_remoteRulesActionOnFailed = RulesSet::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; } -#line 3091 "seclang-parser.cc" +#line 3092 "seclang-parser.cc" break; case 138: // expression: "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION" "CONFIG_VALUE_WARN" -#line 1639 "seclang-parser.yy" +#line 1640 "seclang-parser.yy" { driver.m_remoteRulesActionOnFailed = RulesSet::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; } -#line 3099 "seclang-parser.cc" +#line 3100 "seclang-parser.cc" break; case 141: // expression: "CONGIG_DIR_RESPONSE_BODY_MP" -#line 1653 "seclang-parser.yy" +#line 1654 "seclang-parser.yy" { std::istringstream buf(yystack_[0].value.as < std::string > ()); std::istream_iterator beg(buf), end; @@ -3111,37 +3112,37 @@ namespace yy { driver.m_responseBodyTypeToBeInspected.m_value.insert(*it); } } -#line 3115 "seclang-parser.cc" +#line 3116 "seclang-parser.cc" break; case 142: // expression: "CONGIG_DIR_RESPONSE_BODY_MP_CLEAR" -#line 1665 "seclang-parser.yy" +#line 1666 "seclang-parser.yy" { driver.m_responseBodyTypeToBeInspected.m_set = true; driver.m_responseBodyTypeToBeInspected.m_clear = true; driver.m_responseBodyTypeToBeInspected.m_value.clear(); } -#line 3125 "seclang-parser.cc" +#line 3126 "seclang-parser.cc" break; case 143: // expression: "CONFIG_XML_EXTERNAL_ENTITY" "CONFIG_VALUE_OFF" -#line 1671 "seclang-parser.yy" +#line 1672 "seclang-parser.yy" { driver.m_secXMLExternalEntity = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 3133 "seclang-parser.cc" +#line 3134 "seclang-parser.cc" break; case 144: // expression: "CONFIG_XML_EXTERNAL_ENTITY" "CONFIG_VALUE_ON" -#line 1675 "seclang-parser.yy" +#line 1676 "seclang-parser.yy" { driver.m_secXMLExternalEntity = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 3141 "seclang-parser.cc" +#line 3142 "seclang-parser.cc" break; case 145: // expression: "CONGIG_DIR_SEC_TMP_DIR" -#line 1679 "seclang-parser.yy" +#line 1680 "seclang-parser.yy" { /* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended std::stringstream ss; @@ -3152,31 +3153,31 @@ namespace yy { YYERROR; */ } -#line 3156 "seclang-parser.cc" +#line 3157 "seclang-parser.cc" break; case 148: // expression: "CONGIG_DIR_SEC_COOKIE_FORMAT" -#line 1700 "seclang-parser.yy" +#line 1701 "seclang-parser.yy" { if (atoi(yystack_[0].value.as < std::string > ().c_str()) == 1) { driver.error(yystack_[1].location, "SecCookieFormat 1 is not yet supported."); YYERROR; } } -#line 3167 "seclang-parser.cc" +#line 3168 "seclang-parser.cc" break; case 149: // expression: "CONFIG_SEC_COOKIEV0_SEPARATOR" -#line 1707 "seclang-parser.yy" +#line 1708 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported."); YYERROR; } -#line 3176 "seclang-parser.cc" +#line 3177 "seclang-parser.cc" break; case 151: // expression: "CONFIG_DIR_UNICODE_MAP_FILE" -#line 1717 "seclang-parser.yy" +#line 1718 "seclang-parser.yy" { std::string error; std::vector param; @@ -3230,31 +3231,31 @@ namespace yy { } } -#line 3234 "seclang-parser.cc" +#line 3235 "seclang-parser.cc" break; case 152: // expression: "CONFIG_SEC_COLLECTION_TIMEOUT" -#line 1771 "seclang-parser.yy" +#line 1772 "seclang-parser.yy" { /* Parser error disabled to avoid breaking default CRS installations with crs-setup.conf-recommended driver.error(@0, "SecCollectionTimeout is not yet supported."); YYERROR; */ } -#line 3245 "seclang-parser.cc" +#line 3246 "seclang-parser.cc" break; case 153: // expression: "CONFIG_SEC_HTTP_BLKEY" -#line 1778 "seclang-parser.yy" +#line 1779 "seclang-parser.yy" { driver.m_httpblKey.m_set = true; driver.m_httpblKey.m_value = yystack_[0].value.as < std::string > (); } -#line 3254 "seclang-parser.cc" +#line 3255 "seclang-parser.cc" break; case 154: // variables: variables_pre_process -#line 1786 "seclang-parser.yy" +#line 1787 "seclang-parser.yy" { std::unique_ptr > > originalList = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); std::unique_ptr>> newList(new std::vector>()); @@ -3288,2363 +3289,2363 @@ namespace yy { } yylhs.value.as < std::unique_ptr > > > () = std::move(newNewList); } -#line 3292 "seclang-parser.cc" +#line 3293 "seclang-parser.cc" break; case 155: // variables_pre_process: variables_may_be_quoted -#line 1823 "seclang-parser.yy" +#line 1824 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); } -#line 3300 "seclang-parser.cc" +#line 3301 "seclang-parser.cc" break; case 156: // variables_pre_process: "QUOTATION_MARK" variables_may_be_quoted "QUOTATION_MARK" -#line 1827 "seclang-parser.yy" +#line 1828 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[1].value.as < std::unique_ptr > > > ()); } -#line 3308 "seclang-parser.cc" +#line 3309 "seclang-parser.cc" break; case 157: // variables_may_be_quoted: variables_may_be_quoted PIPE var -#line 1834 "seclang-parser.yy" +#line 1835 "seclang-parser.yy" { yystack_[2].value.as < std::unique_ptr > > > ()->push_back(std::move(yystack_[0].value.as < std::unique_ptr > ())); yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[2].value.as < std::unique_ptr > > > ()); } -#line 3317 "seclang-parser.cc" +#line 3318 "seclang-parser.cc" break; case 158: // variables_may_be_quoted: variables_may_be_quoted PIPE VAR_EXCLUSION var -#line 1839 "seclang-parser.yy" +#line 1840 "seclang-parser.yy" { std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as < std::unique_ptr > ()))); yystack_[3].value.as < std::unique_ptr > > > ()->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[3].value.as < std::unique_ptr > > > ()); } -#line 3327 "seclang-parser.cc" +#line 3328 "seclang-parser.cc" break; case 159: // variables_may_be_quoted: variables_may_be_quoted PIPE VAR_COUNT var -#line 1845 "seclang-parser.yy" +#line 1846 "seclang-parser.yy" { std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as < std::unique_ptr > ()))); yystack_[3].value.as < std::unique_ptr > > > ()->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[3].value.as < std::unique_ptr > > > ()); } -#line 3337 "seclang-parser.cc" +#line 3338 "seclang-parser.cc" break; case 160: // variables_may_be_quoted: var -#line 1851 "seclang-parser.yy" +#line 1852 "seclang-parser.yy" { std::unique_ptr>> b(new std::vector>()); b->push_back(std::move(yystack_[0].value.as < std::unique_ptr > ())); yylhs.value.as < std::unique_ptr > > > () = std::move(b); } -#line 3347 "seclang-parser.cc" +#line 3348 "seclang-parser.cc" break; case 161: // variables_may_be_quoted: VAR_EXCLUSION var -#line 1857 "seclang-parser.yy" +#line 1858 "seclang-parser.yy" { std::unique_ptr>> b(new std::vector>()); std::unique_ptr c(new VariableModificatorExclusion(std::move(yystack_[0].value.as < std::unique_ptr > ()))); b->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(b); } -#line 3358 "seclang-parser.cc" +#line 3359 "seclang-parser.cc" break; case 162: // variables_may_be_quoted: VAR_COUNT var -#line 1864 "seclang-parser.yy" +#line 1865 "seclang-parser.yy" { std::unique_ptr>> b(new std::vector>()); std::unique_ptr c(new VariableModificatorCount(std::move(yystack_[0].value.as < std::unique_ptr > ()))); b->push_back(std::move(c)); yylhs.value.as < std::unique_ptr > > > () = std::move(b); } -#line 3369 "seclang-parser.cc" +#line 3370 "seclang-parser.cc" break; case 163: // var: VARIABLE_ARGS "Dictionary element" -#line 1874 "seclang-parser.yy" +#line 1875 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3377 "seclang-parser.cc" +#line 3378 "seclang-parser.cc" break; case 164: // var: VARIABLE_ARGS "Dictionary element, selected by regexp" -#line 1878 "seclang-parser.yy" +#line 1879 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3385 "seclang-parser.cc" +#line 3386 "seclang-parser.cc" break; case 165: // var: VARIABLE_ARGS -#line 1882 "seclang-parser.yy" +#line 1883 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_NoDictElement()); } -#line 3393 "seclang-parser.cc" +#line 3394 "seclang-parser.cc" break; case 166: // var: VARIABLE_ARGS_POST "Dictionary element" -#line 1886 "seclang-parser.yy" +#line 1887 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3401 "seclang-parser.cc" +#line 3402 "seclang-parser.cc" break; case 167: // var: VARIABLE_ARGS_POST "Dictionary element, selected by regexp" -#line 1890 "seclang-parser.yy" +#line 1891 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3409 "seclang-parser.cc" +#line 3410 "seclang-parser.cc" break; case 168: // var: VARIABLE_ARGS_POST -#line 1894 "seclang-parser.yy" +#line 1895 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_NoDictElement()); } -#line 3417 "seclang-parser.cc" +#line 3418 "seclang-parser.cc" break; case 169: // var: VARIABLE_ARGS_GET "Dictionary element" -#line 1898 "seclang-parser.yy" +#line 1899 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3425 "seclang-parser.cc" +#line 3426 "seclang-parser.cc" break; case 170: // var: VARIABLE_ARGS_GET "Dictionary element, selected by regexp" -#line 1902 "seclang-parser.yy" +#line 1903 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3433 "seclang-parser.cc" +#line 3434 "seclang-parser.cc" break; case 171: // var: VARIABLE_ARGS_GET -#line 1906 "seclang-parser.yy" +#line 1907 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_NoDictElement()); } -#line 3441 "seclang-parser.cc" +#line 3442 "seclang-parser.cc" break; case 172: // var: VARIABLE_FILES_SIZES "Dictionary element" -#line 1910 "seclang-parser.yy" +#line 1911 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3449 "seclang-parser.cc" +#line 3450 "seclang-parser.cc" break; case 173: // var: VARIABLE_FILES_SIZES "Dictionary element, selected by regexp" -#line 1914 "seclang-parser.yy" +#line 1915 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3457 "seclang-parser.cc" +#line 3458 "seclang-parser.cc" break; case 174: // var: VARIABLE_FILES_SIZES -#line 1918 "seclang-parser.yy" +#line 1919 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_NoDictElement()); } -#line 3465 "seclang-parser.cc" +#line 3466 "seclang-parser.cc" break; case 175: // var: VARIABLE_FILES_NAMES "Dictionary element" -#line 1922 "seclang-parser.yy" +#line 1923 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3473 "seclang-parser.cc" +#line 3474 "seclang-parser.cc" break; case 176: // var: VARIABLE_FILES_NAMES "Dictionary element, selected by regexp" -#line 1926 "seclang-parser.yy" +#line 1927 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3481 "seclang-parser.cc" +#line 3482 "seclang-parser.cc" break; case 177: // var: VARIABLE_FILES_NAMES -#line 1930 "seclang-parser.yy" +#line 1931 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_NoDictElement()); } -#line 3489 "seclang-parser.cc" +#line 3490 "seclang-parser.cc" break; case 178: // var: VARIABLE_FILES_TMP_CONTENT "Dictionary element" -#line 1934 "seclang-parser.yy" +#line 1935 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3497 "seclang-parser.cc" +#line 3498 "seclang-parser.cc" break; case 179: // var: VARIABLE_FILES_TMP_CONTENT "Dictionary element, selected by regexp" -#line 1938 "seclang-parser.yy" +#line 1939 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3505 "seclang-parser.cc" +#line 3506 "seclang-parser.cc" break; case 180: // var: VARIABLE_FILES_TMP_CONTENT -#line 1942 "seclang-parser.yy" +#line 1943 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_NoDictElement()); } -#line 3513 "seclang-parser.cc" +#line 3514 "seclang-parser.cc" break; case 181: // var: VARIABLE_MULTIPART_FILENAME "Dictionary element" -#line 1946 "seclang-parser.yy" +#line 1947 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3521 "seclang-parser.cc" +#line 3522 "seclang-parser.cc" break; case 182: // var: VARIABLE_MULTIPART_FILENAME "Dictionary element, selected by regexp" -#line 1950 "seclang-parser.yy" +#line 1951 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3529 "seclang-parser.cc" +#line 3530 "seclang-parser.cc" break; case 183: // var: VARIABLE_MULTIPART_FILENAME -#line 1954 "seclang-parser.yy" +#line 1955 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_NoDictElement()); } -#line 3537 "seclang-parser.cc" +#line 3538 "seclang-parser.cc" break; case 184: // var: VARIABLE_MULTIPART_NAME "Dictionary element" -#line 1958 "seclang-parser.yy" +#line 1959 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3545 "seclang-parser.cc" +#line 3546 "seclang-parser.cc" break; case 185: // var: VARIABLE_MULTIPART_NAME "Dictionary element, selected by regexp" -#line 1962 "seclang-parser.yy" +#line 1963 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3553 "seclang-parser.cc" +#line 3554 "seclang-parser.cc" break; case 186: // var: VARIABLE_MULTIPART_NAME -#line 1966 "seclang-parser.yy" +#line 1967 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_NoDictElement()); } -#line 3561 "seclang-parser.cc" +#line 3562 "seclang-parser.cc" break; case 187: // var: VARIABLE_MATCHED_VARS_NAMES "Dictionary element" -#line 1970 "seclang-parser.yy" +#line 1971 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3569 "seclang-parser.cc" +#line 3570 "seclang-parser.cc" break; case 188: // var: VARIABLE_MATCHED_VARS_NAMES "Dictionary element, selected by regexp" -#line 1974 "seclang-parser.yy" +#line 1975 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3577 "seclang-parser.cc" +#line 3578 "seclang-parser.cc" break; case 189: // var: VARIABLE_MATCHED_VARS_NAMES -#line 1978 "seclang-parser.yy" +#line 1979 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_NoDictElement()); } -#line 3585 "seclang-parser.cc" +#line 3586 "seclang-parser.cc" break; case 190: // var: VARIABLE_MATCHED_VARS "Dictionary element" -#line 1982 "seclang-parser.yy" +#line 1983 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3593 "seclang-parser.cc" +#line 3594 "seclang-parser.cc" break; case 191: // var: VARIABLE_MATCHED_VARS "Dictionary element, selected by regexp" -#line 1986 "seclang-parser.yy" +#line 1987 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3601 "seclang-parser.cc" +#line 3602 "seclang-parser.cc" break; case 192: // var: VARIABLE_MATCHED_VARS -#line 1990 "seclang-parser.yy" +#line 1991 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_NoDictElement()); } -#line 3609 "seclang-parser.cc" +#line 3610 "seclang-parser.cc" break; case 193: // var: VARIABLE_FILES "Dictionary element" -#line 1994 "seclang-parser.yy" +#line 1995 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3617 "seclang-parser.cc" +#line 3618 "seclang-parser.cc" break; case 194: // var: VARIABLE_FILES "Dictionary element, selected by regexp" -#line 1998 "seclang-parser.yy" +#line 1999 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3625 "seclang-parser.cc" +#line 3626 "seclang-parser.cc" break; case 195: // var: VARIABLE_FILES -#line 2002 "seclang-parser.yy" +#line 2003 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_NoDictElement()); } -#line 3633 "seclang-parser.cc" +#line 3634 "seclang-parser.cc" break; case 196: // var: VARIABLE_REQUEST_COOKIES "Dictionary element" -#line 2006 "seclang-parser.yy" +#line 2007 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3641 "seclang-parser.cc" +#line 3642 "seclang-parser.cc" break; case 197: // var: VARIABLE_REQUEST_COOKIES "Dictionary element, selected by regexp" -#line 2010 "seclang-parser.yy" +#line 2011 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3649 "seclang-parser.cc" +#line 3650 "seclang-parser.cc" break; case 198: // var: VARIABLE_REQUEST_COOKIES -#line 2014 "seclang-parser.yy" +#line 2015 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_NoDictElement()); } -#line 3657 "seclang-parser.cc" +#line 3658 "seclang-parser.cc" break; case 199: // var: VARIABLE_REQUEST_HEADERS "Dictionary element" -#line 2018 "seclang-parser.yy" +#line 2019 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3665 "seclang-parser.cc" +#line 3666 "seclang-parser.cc" break; case 200: // var: VARIABLE_REQUEST_HEADERS "Dictionary element, selected by regexp" -#line 2022 "seclang-parser.yy" +#line 2023 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3673 "seclang-parser.cc" +#line 3674 "seclang-parser.cc" break; case 201: // var: VARIABLE_REQUEST_HEADERS -#line 2026 "seclang-parser.yy" +#line 2027 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_NoDictElement()); } -#line 3681 "seclang-parser.cc" +#line 3682 "seclang-parser.cc" break; case 202: // var: VARIABLE_RESPONSE_HEADERS "Dictionary element" -#line 2030 "seclang-parser.yy" +#line 2031 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3689 "seclang-parser.cc" +#line 3690 "seclang-parser.cc" break; case 203: // var: VARIABLE_RESPONSE_HEADERS "Dictionary element, selected by regexp" -#line 2034 "seclang-parser.yy" +#line 2035 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3697 "seclang-parser.cc" +#line 3698 "seclang-parser.cc" break; case 204: // var: VARIABLE_RESPONSE_HEADERS -#line 2038 "seclang-parser.yy" +#line 2039 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_NoDictElement()); } -#line 3705 "seclang-parser.cc" +#line 3706 "seclang-parser.cc" break; case 205: // var: VARIABLE_GEO "Dictionary element" -#line 2042 "seclang-parser.yy" +#line 2043 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3713 "seclang-parser.cc" +#line 3714 "seclang-parser.cc" break; case 206: // var: VARIABLE_GEO "Dictionary element, selected by regexp" -#line 2046 "seclang-parser.yy" +#line 2047 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3721 "seclang-parser.cc" +#line 3722 "seclang-parser.cc" break; case 207: // var: VARIABLE_GEO -#line 2050 "seclang-parser.yy" +#line 2051 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_NoDictElement()); } -#line 3729 "seclang-parser.cc" +#line 3730 "seclang-parser.cc" break; case 208: // var: VARIABLE_REQUEST_COOKIES_NAMES "Dictionary element" -#line 2054 "seclang-parser.yy" +#line 2055 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3737 "seclang-parser.cc" +#line 3738 "seclang-parser.cc" break; case 209: // var: VARIABLE_REQUEST_COOKIES_NAMES "Dictionary element, selected by regexp" -#line 2058 "seclang-parser.yy" +#line 2059 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3745 "seclang-parser.cc" +#line 3746 "seclang-parser.cc" break; case 210: // var: VARIABLE_REQUEST_COOKIES_NAMES -#line 2062 "seclang-parser.yy" +#line 2063 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_NoDictElement()); } -#line 3753 "seclang-parser.cc" +#line 3754 "seclang-parser.cc" break; case 211: // var: VARIABLE_RULE "Dictionary element" -#line 2066 "seclang-parser.yy" +#line 2067 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3761 "seclang-parser.cc" +#line 3762 "seclang-parser.cc" break; case 212: // var: VARIABLE_RULE "Dictionary element, selected by regexp" -#line 2070 "seclang-parser.yy" +#line 2071 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3769 "seclang-parser.cc" +#line 3770 "seclang-parser.cc" break; case 213: // var: VARIABLE_RULE -#line 2074 "seclang-parser.yy" +#line 2075 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_NoDictElement()); } -#line 3777 "seclang-parser.cc" +#line 3778 "seclang-parser.cc" break; case 214: // var: "RUN_TIME_VAR_ENV" "Dictionary element" -#line 2078 "seclang-parser.yy" +#line 2079 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV:" + yystack_[0].value.as < std::string > ())); } -#line 3785 "seclang-parser.cc" +#line 3786 "seclang-parser.cc" break; case 215: // var: "RUN_TIME_VAR_ENV" "Dictionary element, selected by regexp" -#line 2082 "seclang-parser.yy" +#line 2083 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV:" + yystack_[0].value.as < std::string > ())); } -#line 3793 "seclang-parser.cc" +#line 3794 "seclang-parser.cc" break; case 216: // var: "RUN_TIME_VAR_ENV" -#line 2086 "seclang-parser.yy" +#line 2087 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV")); } -#line 3801 "seclang-parser.cc" +#line 3802 "seclang-parser.cc" break; case 217: // var: "RUN_TIME_VAR_XML" "Dictionary element" -#line 2090 "seclang-parser.yy" +#line 2091 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML_WithNSPath(yystack_[0].value.as < std::string > ())); } -#line 3809 "seclang-parser.cc" +#line 3810 "seclang-parser.cc" break; case 218: // var: "RUN_TIME_VAR_XML" "Dictionary element, selected by regexp" -#line 2094 "seclang-parser.yy" +#line 2095 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML_WithNSPath(yystack_[0].value.as < std::string > ())); } -#line 3817 "seclang-parser.cc" +#line 3818 "seclang-parser.cc" break; case 219: // var: "RUN_TIME_VAR_XML" -#line 2098 "seclang-parser.yy" +#line 2099 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML_WithoutNSPath()); } -#line 3825 "seclang-parser.cc" +#line 3826 "seclang-parser.cc" break; case 220: // var: "FILES_TMPNAMES" "Dictionary element" -#line 2102 "seclang-parser.yy" +#line 2103 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3833 "seclang-parser.cc" +#line 3834 "seclang-parser.cc" break; case 221: // var: "FILES_TMPNAMES" "Dictionary element, selected by regexp" -#line 2106 "seclang-parser.yy" +#line 2107 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3841 "seclang-parser.cc" +#line 3842 "seclang-parser.cc" break; case 222: // var: "FILES_TMPNAMES" -#line 2110 "seclang-parser.yy" +#line 2111 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_NoDictElement()); } -#line 3849 "seclang-parser.cc" +#line 3850 "seclang-parser.cc" break; case 223: // var: "RESOURCE" run_time_string -#line 2114 "seclang-parser.yy" +#line 2115 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3857 "seclang-parser.cc" +#line 3858 "seclang-parser.cc" break; case 224: // var: "RESOURCE" "Dictionary element" -#line 2118 "seclang-parser.yy" +#line 2119 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3865 "seclang-parser.cc" +#line 3866 "seclang-parser.cc" break; case 225: // var: "RESOURCE" "Dictionary element, selected by regexp" -#line 2122 "seclang-parser.yy" +#line 2123 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3873 "seclang-parser.cc" +#line 3874 "seclang-parser.cc" break; case 226: // var: "RESOURCE" -#line 2126 "seclang-parser.yy" +#line 2127 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_NoDictElement()); } -#line 3881 "seclang-parser.cc" +#line 3882 "seclang-parser.cc" break; case 227: // var: "VARIABLE_IP" run_time_string -#line 2130 "seclang-parser.yy" +#line 2131 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3889 "seclang-parser.cc" +#line 3890 "seclang-parser.cc" break; case 228: // var: "VARIABLE_IP" "Dictionary element" -#line 2134 "seclang-parser.yy" +#line 2135 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3897 "seclang-parser.cc" +#line 3898 "seclang-parser.cc" break; case 229: // var: "VARIABLE_IP" "Dictionary element, selected by regexp" -#line 2138 "seclang-parser.yy" +#line 2139 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3905 "seclang-parser.cc" +#line 3906 "seclang-parser.cc" break; case 230: // var: "VARIABLE_IP" -#line 2142 "seclang-parser.yy" +#line 2143 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_NoDictElement()); } -#line 3913 "seclang-parser.cc" +#line 3914 "seclang-parser.cc" break; case 231: // var: "VARIABLE_GLOBAL" run_time_string -#line 2146 "seclang-parser.yy" +#line 2147 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3921 "seclang-parser.cc" +#line 3922 "seclang-parser.cc" break; case 232: // var: "VARIABLE_GLOBAL" "Dictionary element" -#line 2150 "seclang-parser.yy" +#line 2151 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3929 "seclang-parser.cc" +#line 3930 "seclang-parser.cc" break; case 233: // var: "VARIABLE_GLOBAL" "Dictionary element, selected by regexp" -#line 2154 "seclang-parser.yy" +#line 2155 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3937 "seclang-parser.cc" +#line 3938 "seclang-parser.cc" break; case 234: // var: "VARIABLE_GLOBAL" -#line 2158 "seclang-parser.yy" +#line 2159 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_NoDictElement()); } -#line 3945 "seclang-parser.cc" +#line 3946 "seclang-parser.cc" break; case 235: // var: "VARIABLE_USER" run_time_string -#line 2162 "seclang-parser.yy" +#line 2163 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3953 "seclang-parser.cc" +#line 3954 "seclang-parser.cc" break; case 236: // var: "VARIABLE_USER" "Dictionary element" -#line 2166 "seclang-parser.yy" +#line 2167 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3961 "seclang-parser.cc" +#line 3962 "seclang-parser.cc" break; case 237: // var: "VARIABLE_USER" "Dictionary element, selected by regexp" -#line 2170 "seclang-parser.yy" +#line 2171 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3969 "seclang-parser.cc" +#line 3970 "seclang-parser.cc" break; case 238: // var: "VARIABLE_USER" -#line 2174 "seclang-parser.yy" +#line 2175 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_NoDictElement()); } -#line 3977 "seclang-parser.cc" +#line 3978 "seclang-parser.cc" break; case 239: // var: "VARIABLE_TX" run_time_string -#line 2178 "seclang-parser.yy" +#line 2179 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 3985 "seclang-parser.cc" +#line 3986 "seclang-parser.cc" break; case 240: // var: "VARIABLE_TX" "Dictionary element" -#line 2182 "seclang-parser.yy" +#line 2183 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3993 "seclang-parser.cc" +#line 3994 "seclang-parser.cc" break; case 241: // var: "VARIABLE_TX" "Dictionary element, selected by regexp" -#line 2186 "seclang-parser.yy" +#line 2187 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4001 "seclang-parser.cc" +#line 4002 "seclang-parser.cc" break; case 242: // var: "VARIABLE_TX" -#line 2190 "seclang-parser.yy" +#line 2191 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_NoDictElement()); } -#line 4009 "seclang-parser.cc" +#line 4010 "seclang-parser.cc" break; case 243: // var: "VARIABLE_SESSION" run_time_string -#line 2194 "seclang-parser.yy" +#line 2195 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DynamicElement(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 4017 "seclang-parser.cc" +#line 4018 "seclang-parser.cc" break; case 244: // var: "VARIABLE_SESSION" "Dictionary element" -#line 2198 "seclang-parser.yy" +#line 2199 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4025 "seclang-parser.cc" +#line 4026 "seclang-parser.cc" break; case 245: // var: "VARIABLE_SESSION" "Dictionary element, selected by regexp" -#line 2202 "seclang-parser.yy" +#line 2203 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4033 "seclang-parser.cc" +#line 4034 "seclang-parser.cc" break; case 246: // var: "VARIABLE_SESSION" -#line 2206 "seclang-parser.yy" +#line 2207 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_NoDictElement()); } -#line 4041 "seclang-parser.cc" +#line 4042 "seclang-parser.cc" break; case 247: // var: "Variable ARGS_NAMES" "Dictionary element" -#line 2210 "seclang-parser.yy" +#line 2211 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4049 "seclang-parser.cc" +#line 4050 "seclang-parser.cc" break; case 248: // var: "Variable ARGS_NAMES" "Dictionary element, selected by regexp" -#line 2214 "seclang-parser.yy" +#line 2215 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4057 "seclang-parser.cc" +#line 4058 "seclang-parser.cc" break; case 249: // var: "Variable ARGS_NAMES" -#line 2218 "seclang-parser.yy" +#line 2219 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_NoDictElement()); } -#line 4065 "seclang-parser.cc" +#line 4066 "seclang-parser.cc" break; case 250: // var: VARIABLE_ARGS_GET_NAMES "Dictionary element" -#line 2222 "seclang-parser.yy" +#line 2223 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4073 "seclang-parser.cc" +#line 4074 "seclang-parser.cc" break; case 251: // var: VARIABLE_ARGS_GET_NAMES "Dictionary element, selected by regexp" -#line 2226 "seclang-parser.yy" +#line 2227 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4081 "seclang-parser.cc" +#line 4082 "seclang-parser.cc" break; case 252: // var: VARIABLE_ARGS_GET_NAMES -#line 2230 "seclang-parser.yy" +#line 2231 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_NoDictElement()); } -#line 4089 "seclang-parser.cc" +#line 4090 "seclang-parser.cc" break; case 253: // var: VARIABLE_ARGS_POST_NAMES "Dictionary element" -#line 2235 "seclang-parser.yy" +#line 2236 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4097 "seclang-parser.cc" +#line 4098 "seclang-parser.cc" break; case 254: // var: VARIABLE_ARGS_POST_NAMES "Dictionary element, selected by regexp" -#line 2239 "seclang-parser.yy" +#line 2240 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4105 "seclang-parser.cc" +#line 4106 "seclang-parser.cc" break; case 255: // var: VARIABLE_ARGS_POST_NAMES -#line 2243 "seclang-parser.yy" +#line 2244 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_NoDictElement()); } -#line 4113 "seclang-parser.cc" +#line 4114 "seclang-parser.cc" break; case 256: // var: VARIABLE_REQUEST_HEADERS_NAMES "Dictionary element" -#line 2248 "seclang-parser.yy" +#line 2249 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4121 "seclang-parser.cc" +#line 4122 "seclang-parser.cc" break; case 257: // var: VARIABLE_REQUEST_HEADERS_NAMES "Dictionary element, selected by regexp" -#line 2252 "seclang-parser.yy" +#line 2253 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4129 "seclang-parser.cc" +#line 4130 "seclang-parser.cc" break; case 258: // var: VARIABLE_REQUEST_HEADERS_NAMES -#line 2256 "seclang-parser.yy" +#line 2257 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_NoDictElement()); } -#line 4137 "seclang-parser.cc" +#line 4138 "seclang-parser.cc" break; case 259: // var: VARIABLE_RESPONSE_CONTENT_TYPE -#line 2261 "seclang-parser.yy" +#line 2262 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseContentType()); } -#line 4145 "seclang-parser.cc" +#line 4146 "seclang-parser.cc" break; case 260: // var: VARIABLE_RESPONSE_HEADERS_NAMES "Dictionary element" -#line 2266 "seclang-parser.yy" +#line 2267 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4153 "seclang-parser.cc" +#line 4154 "seclang-parser.cc" break; case 261: // var: VARIABLE_RESPONSE_HEADERS_NAMES "Dictionary element, selected by regexp" -#line 2270 "seclang-parser.yy" +#line 2271 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4161 "seclang-parser.cc" +#line 4162 "seclang-parser.cc" break; case 262: // var: VARIABLE_RESPONSE_HEADERS_NAMES -#line 2274 "seclang-parser.yy" +#line 2275 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_NoDictElement()); } -#line 4169 "seclang-parser.cc" +#line 4170 "seclang-parser.cc" break; case 263: // var: VARIABLE_ARGS_COMBINED_SIZE -#line 2278 "seclang-parser.yy" +#line 2279 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsCombinedSize()); } -#line 4177 "seclang-parser.cc" +#line 4178 "seclang-parser.cc" break; case 264: // var: "AUTH_TYPE" -#line 2282 "seclang-parser.yy" +#line 2283 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::AuthType()); } -#line 4185 "seclang-parser.cc" +#line 4186 "seclang-parser.cc" break; case 265: // var: "FILES_COMBINED_SIZE" -#line 2286 "seclang-parser.yy" +#line 2287 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesCombinedSize()); } -#line 4193 "seclang-parser.cc" +#line 4194 "seclang-parser.cc" break; case 266: // var: "FULL_REQUEST" -#line 2290 "seclang-parser.yy" +#line 2291 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FullRequest()); } -#line 4201 "seclang-parser.cc" +#line 4202 "seclang-parser.cc" break; case 267: // var: "FULL_REQUEST_LENGTH" -#line 2294 "seclang-parser.yy" +#line 2295 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FullRequestLength()); } -#line 4209 "seclang-parser.cc" +#line 4210 "seclang-parser.cc" break; case 268: // var: "INBOUND_DATA_ERROR" -#line 2298 "seclang-parser.yy" +#line 2299 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::InboundDataError()); } -#line 4217 "seclang-parser.cc" +#line 4218 "seclang-parser.cc" break; case 269: // var: "MATCHED_VAR" -#line 2302 "seclang-parser.yy" +#line 2303 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVar()); } -#line 4225 "seclang-parser.cc" +#line 4226 "seclang-parser.cc" break; case 270: // var: "MATCHED_VAR_NAME" -#line 2306 "seclang-parser.yy" +#line 2307 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarName()); } -#line 4233 "seclang-parser.cc" +#line 4234 "seclang-parser.cc" break; case 271: // var: VARIABLE_MULTIPART_BOUNDARY_QUOTED -#line 2310 "seclang-parser.yy" +#line 2311 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartBoundaryQuoted()); } -#line 4241 "seclang-parser.cc" +#line 4242 "seclang-parser.cc" break; case 272: // var: VARIABLE_MULTIPART_BOUNDARY_WHITESPACE -#line 2314 "seclang-parser.yy" +#line 2315 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartBoundaryWhiteSpace()); } -#line 4249 "seclang-parser.cc" +#line 4250 "seclang-parser.cc" break; case 273: // var: "MULTIPART_CRLF_LF_LINES" -#line 2318 "seclang-parser.yy" +#line 2319 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartCrlfLFLines()); } -#line 4257 "seclang-parser.cc" +#line 4258 "seclang-parser.cc" break; case 274: // var: "MULTIPART_DATA_AFTER" -#line 2322 "seclang-parser.yy" +#line 2323 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartDateAfter()); } -#line 4265 "seclang-parser.cc" +#line 4266 "seclang-parser.cc" break; case 275: // var: VARIABLE_MULTIPART_DATA_BEFORE -#line 2326 "seclang-parser.yy" +#line 2327 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartDateBefore()); } -#line 4273 "seclang-parser.cc" +#line 4274 "seclang-parser.cc" break; case 276: // var: "MULTIPART_FILE_LIMIT_EXCEEDED" -#line 2330 "seclang-parser.yy" +#line 2331 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartFileLimitExceeded()); } -#line 4281 "seclang-parser.cc" +#line 4282 "seclang-parser.cc" break; case 277: // var: "MULTIPART_HEADER_FOLDING" -#line 2334 "seclang-parser.yy" +#line 2335 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartHeaderFolding()); } -#line 4289 "seclang-parser.cc" +#line 4290 "seclang-parser.cc" break; case 278: // var: "MULTIPART_INVALID_HEADER_FOLDING" -#line 2338 "seclang-parser.yy" +#line 2339 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidHeaderFolding()); } -#line 4297 "seclang-parser.cc" +#line 4298 "seclang-parser.cc" break; case 279: // var: VARIABLE_MULTIPART_INVALID_PART -#line 2342 "seclang-parser.yy" +#line 2343 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidPart()); } -#line 4305 "seclang-parser.cc" +#line 4306 "seclang-parser.cc" break; case 280: // var: "MULTIPART_INVALID_QUOTING" -#line 2346 "seclang-parser.yy" +#line 2347 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidQuoting()); } -#line 4313 "seclang-parser.cc" +#line 4314 "seclang-parser.cc" break; case 281: // var: VARIABLE_MULTIPART_LF_LINE -#line 2350 "seclang-parser.yy" +#line 2351 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartLFLine()); } -#line 4321 "seclang-parser.cc" +#line 4322 "seclang-parser.cc" break; case 282: // var: VARIABLE_MULTIPART_MISSING_SEMICOLON -#line 2354 "seclang-parser.yy" +#line 2355 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartMissingSemicolon()); } -#line 4329 "seclang-parser.cc" +#line 4330 "seclang-parser.cc" break; case 283: // var: VARIABLE_MULTIPART_SEMICOLON_MISSING -#line 2358 "seclang-parser.yy" +#line 2359 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartMissingSemicolon()); } -#line 4337 "seclang-parser.cc" +#line 4338 "seclang-parser.cc" break; case 284: // var: "MULTIPART_STRICT_ERROR" -#line 2362 "seclang-parser.yy" +#line 2363 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartStrictError()); } -#line 4345 "seclang-parser.cc" +#line 4346 "seclang-parser.cc" break; case 285: // var: "MULTIPART_UNMATCHED_BOUNDARY" -#line 2366 "seclang-parser.yy" +#line 2367 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartUnmatchedBoundary()); } -#line 4353 "seclang-parser.cc" +#line 4354 "seclang-parser.cc" break; case 286: // var: "OUTBOUND_DATA_ERROR" -#line 2370 "seclang-parser.yy" +#line 2371 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::OutboundDataError()); } -#line 4361 "seclang-parser.cc" +#line 4362 "seclang-parser.cc" break; case 287: // var: "PATH_INFO" -#line 2374 "seclang-parser.yy" +#line 2375 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::PathInfo()); } -#line 4369 "seclang-parser.cc" +#line 4370 "seclang-parser.cc" break; case 288: // var: "QUERY_STRING" -#line 2378 "seclang-parser.yy" +#line 2379 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::QueryString()); } -#line 4377 "seclang-parser.cc" +#line 4378 "seclang-parser.cc" break; case 289: // var: "REMOTE_ADDR" -#line 2382 "seclang-parser.yy" +#line 2383 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemoteAddr()); } -#line 4385 "seclang-parser.cc" +#line 4386 "seclang-parser.cc" break; case 290: // var: "REMOTE_HOST" -#line 2386 "seclang-parser.yy" +#line 2387 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemoteHost()); } -#line 4393 "seclang-parser.cc" +#line 4394 "seclang-parser.cc" break; case 291: // var: "REMOTE_PORT" -#line 2390 "seclang-parser.yy" +#line 2391 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemotePort()); } -#line 4401 "seclang-parser.cc" +#line 4402 "seclang-parser.cc" break; case 292: // var: "REQBODY_ERROR" -#line 2394 "seclang-parser.yy" +#line 2395 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyError()); } -#line 4409 "seclang-parser.cc" +#line 4410 "seclang-parser.cc" break; case 293: // var: "REQBODY_ERROR_MSG" -#line 2398 "seclang-parser.yy" +#line 2399 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyErrorMsg()); } -#line 4417 "seclang-parser.cc" +#line 4418 "seclang-parser.cc" break; case 294: // var: "REQBODY_PROCESSOR" -#line 2402 "seclang-parser.yy" +#line 2403 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessor()); } -#line 4425 "seclang-parser.cc" +#line 4426 "seclang-parser.cc" break; case 295: // var: "REQBODY_PROCESSOR_ERROR" -#line 2406 "seclang-parser.yy" +#line 2407 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessorError()); } -#line 4433 "seclang-parser.cc" +#line 4434 "seclang-parser.cc" break; case 296: // var: "REQBODY_PROCESSOR_ERROR_MSG" -#line 2410 "seclang-parser.yy" +#line 2411 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessorErrorMsg()); } -#line 4441 "seclang-parser.cc" +#line 4442 "seclang-parser.cc" break; case 297: // var: "REQUEST_BASENAME" -#line 2414 "seclang-parser.yy" +#line 2415 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBasename()); } -#line 4449 "seclang-parser.cc" +#line 4450 "seclang-parser.cc" break; case 298: // var: "REQUEST_BODY" -#line 2418 "seclang-parser.yy" +#line 2419 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBody()); } -#line 4457 "seclang-parser.cc" +#line 4458 "seclang-parser.cc" break; case 299: // var: "REQUEST_BODY_LENGTH" -#line 2422 "seclang-parser.yy" +#line 2423 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBodyLength()); } -#line 4465 "seclang-parser.cc" +#line 4466 "seclang-parser.cc" break; case 300: // var: "REQUEST_FILENAME" -#line 2426 "seclang-parser.yy" +#line 2427 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestFilename()); } -#line 4473 "seclang-parser.cc" +#line 4474 "seclang-parser.cc" break; case 301: // var: "REQUEST_LINE" -#line 2430 "seclang-parser.yy" +#line 2431 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestLine()); } -#line 4481 "seclang-parser.cc" +#line 4482 "seclang-parser.cc" break; case 302: // var: "REQUEST_METHOD" -#line 2434 "seclang-parser.yy" +#line 2435 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestMethod()); } -#line 4489 "seclang-parser.cc" +#line 4490 "seclang-parser.cc" break; case 303: // var: "REQUEST_PROTOCOL" -#line 2438 "seclang-parser.yy" +#line 2439 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestProtocol()); } -#line 4497 "seclang-parser.cc" +#line 4498 "seclang-parser.cc" break; case 304: // var: "REQUEST_URI" -#line 2442 "seclang-parser.yy" +#line 2443 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestURI()); } -#line 4505 "seclang-parser.cc" +#line 4506 "seclang-parser.cc" break; case 305: // var: "REQUEST_URI_RAW" -#line 2446 "seclang-parser.yy" +#line 2447 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestURIRaw()); } -#line 4513 "seclang-parser.cc" +#line 4514 "seclang-parser.cc" break; case 306: // var: "RESPONSE_BODY" -#line 2450 "seclang-parser.yy" +#line 2451 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseBody()); } -#line 4521 "seclang-parser.cc" +#line 4522 "seclang-parser.cc" break; case 307: // var: "RESPONSE_CONTENT_LENGTH" -#line 2454 "seclang-parser.yy" +#line 2455 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseContentLength()); } -#line 4529 "seclang-parser.cc" +#line 4530 "seclang-parser.cc" break; case 308: // var: "RESPONSE_PROTOCOL" -#line 2458 "seclang-parser.yy" +#line 2459 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseProtocol()); } -#line 4537 "seclang-parser.cc" +#line 4538 "seclang-parser.cc" break; case 309: // var: "RESPONSE_STATUS" -#line 2462 "seclang-parser.yy" +#line 2463 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseStatus()); } -#line 4545 "seclang-parser.cc" +#line 4546 "seclang-parser.cc" break; case 310: // var: "SERVER_ADDR" -#line 2466 "seclang-parser.yy" +#line 2467 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerAddr()); } -#line 4553 "seclang-parser.cc" +#line 4554 "seclang-parser.cc" break; case 311: // var: "SERVER_NAME" -#line 2470 "seclang-parser.yy" +#line 2471 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerName()); } -#line 4561 "seclang-parser.cc" +#line 4562 "seclang-parser.cc" break; case 312: // var: "SERVER_PORT" -#line 2474 "seclang-parser.yy" +#line 2475 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerPort()); } -#line 4569 "seclang-parser.cc" +#line 4570 "seclang-parser.cc" break; case 313: // var: "SESSIONID" -#line 2478 "seclang-parser.yy" +#line 2479 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::SessionID()); } -#line 4577 "seclang-parser.cc" +#line 4578 "seclang-parser.cc" break; case 314: // var: "UNIQUE_ID" -#line 2482 "seclang-parser.yy" +#line 2483 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UniqueID()); } -#line 4585 "seclang-parser.cc" +#line 4586 "seclang-parser.cc" break; case 315: // var: "URLENCODED_ERROR" -#line 2486 "seclang-parser.yy" +#line 2487 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UrlEncodedError()); } -#line 4593 "seclang-parser.cc" +#line 4594 "seclang-parser.cc" break; case 316: // var: "USERID" -#line 2490 "seclang-parser.yy" +#line 2491 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UserID()); } -#line 4601 "seclang-parser.cc" +#line 4602 "seclang-parser.cc" break; case 317: // var: "VARIABLE_STATUS" -#line 2494 "seclang-parser.yy" +#line 2495 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Status()); } -#line 4609 "seclang-parser.cc" +#line 4610 "seclang-parser.cc" break; case 318: // var: "VARIABLE_STATUS_LINE" -#line 2498 "seclang-parser.yy" +#line 2499 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Status()); } -#line 4617 "seclang-parser.cc" +#line 4618 "seclang-parser.cc" break; case 319: // var: "WEBAPPID" -#line 2502 "seclang-parser.yy" +#line 2503 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::WebAppId()); } -#line 4625 "seclang-parser.cc" +#line 4626 "seclang-parser.cc" break; case 320: // var: "RUN_TIME_VAR_DUR" -#line 2506 "seclang-parser.yy" +#line 2507 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new Duration(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4636 "seclang-parser.cc" +#line 4637 "seclang-parser.cc" break; case 321: // var: "RUN_TIME_VAR_BLD" -#line 2514 "seclang-parser.yy" +#line 2515 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new ModsecBuild(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4647 "seclang-parser.cc" +#line 4648 "seclang-parser.cc" break; case 322: // var: "RUN_TIME_VAR_HSV" -#line 2521 "seclang-parser.yy" +#line 2522 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new HighestSeverity(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4658 "seclang-parser.cc" +#line 4659 "seclang-parser.cc" break; case 323: // var: "RUN_TIME_VAR_REMOTE_USER" -#line 2528 "seclang-parser.yy" +#line 2529 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new RemoteUser(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4669 "seclang-parser.cc" +#line 4670 "seclang-parser.cc" break; case 324: // var: "RUN_TIME_VAR_TIME" -#line 2535 "seclang-parser.yy" +#line 2536 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new Time(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4680 "seclang-parser.cc" +#line 4681 "seclang-parser.cc" break; case 325: // var: "RUN_TIME_VAR_TIME_DAY" -#line 2542 "seclang-parser.yy" +#line 2543 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeDay(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4691 "seclang-parser.cc" +#line 4692 "seclang-parser.cc" break; case 326: // var: "RUN_TIME_VAR_TIME_EPOCH" -#line 2549 "seclang-parser.yy" +#line 2550 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeEpoch(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4702 "seclang-parser.cc" +#line 4703 "seclang-parser.cc" break; case 327: // var: "RUN_TIME_VAR_TIME_HOUR" -#line 2556 "seclang-parser.yy" +#line 2557 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeHour(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4713 "seclang-parser.cc" +#line 4714 "seclang-parser.cc" break; case 328: // var: "RUN_TIME_VAR_TIME_MIN" -#line 2563 "seclang-parser.yy" +#line 2564 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeMin(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4724 "seclang-parser.cc" +#line 4725 "seclang-parser.cc" break; case 329: // var: "RUN_TIME_VAR_TIME_MON" -#line 2570 "seclang-parser.yy" +#line 2571 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeMon(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4735 "seclang-parser.cc" +#line 4736 "seclang-parser.cc" break; case 330: // var: "RUN_TIME_VAR_TIME_SEC" -#line 2577 "seclang-parser.yy" +#line 2578 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeSec(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4746 "seclang-parser.cc" +#line 4747 "seclang-parser.cc" break; case 331: // var: "RUN_TIME_VAR_TIME_WDAY" -#line 2584 "seclang-parser.yy" +#line 2585 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeWDay(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4757 "seclang-parser.cc" +#line 4758 "seclang-parser.cc" break; case 332: // var: "RUN_TIME_VAR_TIME_YEAR" -#line 2591 "seclang-parser.yy" +#line 2592 "seclang-parser.yy" { std::string name(yystack_[0].value.as < std::string > ()); char z = name.at(0); std::unique_ptr c(new TimeYear(name)); yylhs.value.as < std::unique_ptr > () = std::move(c); } -#line 4768 "seclang-parser.cc" +#line 4769 "seclang-parser.cc" break; case 333: // act: "Accuracy" -#line 2601 "seclang-parser.yy" +#line 2602 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as < std::string > ())); } -#line 4776 "seclang-parser.cc" +#line 4777 "seclang-parser.cc" break; case 334: // act: "Allow" -#line 2605 "seclang-parser.yy" +#line 2606 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as < std::string > ())); } -#line 4784 "seclang-parser.cc" +#line 4785 "seclang-parser.cc" break; case 335: // act: "Append" -#line 2609 "seclang-parser.yy" +#line 2610 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Append", yystack_[1].location); } -#line 4792 "seclang-parser.cc" +#line 4793 "seclang-parser.cc" break; case 336: // act: "AuditLog" -#line 2613 "seclang-parser.yy" +#line 2614 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::AuditLog()); } -#line 4800 "seclang-parser.cc" +#line 4801 "seclang-parser.cc" break; case 337: // act: "Block" -#line 2617 "seclang-parser.yy" +#line 2618 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Block()); } -#line 4808 "seclang-parser.cc" +#line 4809 "seclang-parser.cc" break; case 338: // act: "Capture" -#line 2621 "seclang-parser.yy" +#line 2622 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Capture()); } -#line 4816 "seclang-parser.cc" +#line 4817 "seclang-parser.cc" break; case 339: // act: "Chain" -#line 2625 "seclang-parser.yy" +#line 2626 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Chain()); } -#line 4824 "seclang-parser.cc" +#line 4825 "seclang-parser.cc" break; case 340: // act: "ACTION_CTL_AUDIT_ENGINE" "CONFIG_VALUE_ON" -#line 2629 "seclang-parser.yy" +#line 2630 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4833 "seclang-parser.cc" +#line 4834 "seclang-parser.cc" break; case 341: // act: "ACTION_CTL_AUDIT_ENGINE" "CONFIG_VALUE_OFF" -#line 2634 "seclang-parser.yy" +#line 2635 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4842 "seclang-parser.cc" +#line 4843 "seclang-parser.cc" break; case 342: // act: "ACTION_CTL_AUDIT_ENGINE" "CONFIG_VALUE_RELEVANT_ONLY" -#line 2639 "seclang-parser.yy" +#line 2640 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4851 "seclang-parser.cc" +#line 4852 "seclang-parser.cc" break; case 343: // act: "ACTION_CTL_AUDIT_LOG_PARTS" -#line 2644 "seclang-parser.yy" +#line 2645 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as < std::string > ())); } -#line 4859 "seclang-parser.cc" +#line 4860 "seclang-parser.cc" break; case 344: // act: "ACTION_CTL_BDY_JSON" -#line 2648 "seclang-parser.yy" +#line 2649 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as < std::string > ())); } -#line 4867 "seclang-parser.cc" +#line 4868 "seclang-parser.cc" break; case 345: // act: "ACTION_CTL_BDY_XML" -#line 2652 "seclang-parser.yy" +#line 2653 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as < std::string > ())); } -#line 4875 "seclang-parser.cc" +#line 4876 "seclang-parser.cc" break; case 346: // act: "ACTION_CTL_BDY_URLENCODED" -#line 2656 "seclang-parser.yy" +#line 2657 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as < std::string > ())); } -#line 4883 "seclang-parser.cc" +#line 4884 "seclang-parser.cc" break; case 347: // act: "ACTION_CTL_FORCE_REQ_BODY_VAR" "CONFIG_VALUE_ON" -#line 2660 "seclang-parser.yy" +#line 2661 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4892 "seclang-parser.cc" +#line 4893 "seclang-parser.cc" break; case 348: // act: "ACTION_CTL_FORCE_REQ_BODY_VAR" "CONFIG_VALUE_OFF" -#line 2665 "seclang-parser.yy" +#line 2666 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[1].value.as < std::string > ())); } -#line 4901 "seclang-parser.cc" +#line 4902 "seclang-parser.cc" break; case 349: // act: "ACTION_CTL_REQUEST_BODY_ACCESS" "CONFIG_VALUE_ON" -#line 2670 "seclang-parser.yy" +#line 2671 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "true")); } -#line 4909 "seclang-parser.cc" +#line 4910 "seclang-parser.cc" break; case 350: // act: "ACTION_CTL_REQUEST_BODY_ACCESS" "CONFIG_VALUE_OFF" -#line 2674 "seclang-parser.yy" +#line 2675 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "false")); } -#line 4917 "seclang-parser.cc" +#line 4918 "seclang-parser.cc" break; case 351: // act: "ACTION_CTL_RULE_ENGINE" "CONFIG_VALUE_ON" -#line 2678 "seclang-parser.yy" +#line 2679 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); } -#line 4925 "seclang-parser.cc" +#line 4926 "seclang-parser.cc" break; case 352: // act: "ACTION_CTL_RULE_ENGINE" "CONFIG_VALUE_OFF" -#line 2682 "seclang-parser.yy" +#line 2683 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=off")); } -#line 4933 "seclang-parser.cc" +#line 4934 "seclang-parser.cc" break; case 353: // act: "ACTION_CTL_RULE_ENGINE" "CONFIG_VALUE_DETC" -#line 2686 "seclang-parser.yy" +#line 2687 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=detectiononly")); } -#line 4941 "seclang-parser.cc" +#line 4942 "seclang-parser.cc" break; case 354: // act: "ACTION_CTL_RULE_REMOVE_BY_ID" -#line 2690 "seclang-parser.yy" +#line 2691 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as < std::string > ())); } -#line 4949 "seclang-parser.cc" +#line 4950 "seclang-parser.cc" break; case 355: // act: "ACTION_CTL_RULE_REMOVE_BY_TAG" -#line 2694 "seclang-parser.yy" +#line 2695 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveByTag(yystack_[0].value.as < std::string > ())); } -#line 4957 "seclang-parser.cc" +#line 4958 "seclang-parser.cc" break; case 356: // act: "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID" -#line 2698 "seclang-parser.yy" +#line 2699 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as < std::string > ())); } -#line 4965 "seclang-parser.cc" +#line 4966 "seclang-parser.cc" break; case 357: // act: "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG" -#line 2702 "seclang-parser.yy" +#line 2703 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as < std::string > ())); } -#line 4973 "seclang-parser.cc" +#line 4974 "seclang-parser.cc" break; case 358: // act: "Deny" -#line 2706 "seclang-parser.yy" +#line 2707 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Deny()); } -#line 4981 "seclang-parser.cc" +#line 4982 "seclang-parser.cc" break; case 359: // act: "DeprecateVar" -#line 2710 "seclang-parser.yy" +#line 2711 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); } -#line 4989 "seclang-parser.cc" +#line 4990 "seclang-parser.cc" break; case 360: // act: "Drop" -#line 2714 "seclang-parser.yy" +#line 2715 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Drop()); } -#line 4997 "seclang-parser.cc" +#line 4998 "seclang-parser.cc" break; case 361: // act: "Exec" -#line 2718 "seclang-parser.yy" +#line 2719 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Exec(yystack_[0].value.as < std::string > ())); } -#line 5005 "seclang-parser.cc" +#line 5006 "seclang-parser.cc" break; case 362: // act: "ExpireVar" -#line 2722 "seclang-parser.yy" +#line 2723 "seclang-parser.yy" { //ACTION_NOT_SUPPORTED("ExpireVar", @0); ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Action(yystack_[0].value.as < std::string > ())); } -#line 5014 "seclang-parser.cc" +#line 5015 "seclang-parser.cc" break; case 363: // act: "Id" -#line 2727 "seclang-parser.yy" +#line 2728 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as < std::string > ())); } -#line 5022 "seclang-parser.cc" +#line 5023 "seclang-parser.cc" break; case 364: // act: "InitCol" run_time_string -#line 2731 "seclang-parser.yy" +#line 2732 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::InitCol(yystack_[1].value.as < std::string > (), std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5030 "seclang-parser.cc" +#line 5031 "seclang-parser.cc" break; case 365: // act: "LogData" run_time_string -#line 2735 "seclang-parser.yy" +#line 2736 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::LogData(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5038 "seclang-parser.cc" +#line 5039 "seclang-parser.cc" break; case 366: // act: "Log" -#line 2739 "seclang-parser.yy" +#line 2740 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Log()); } -#line 5046 "seclang-parser.cc" +#line 5047 "seclang-parser.cc" break; case 367: // act: "Maturity" -#line 2743 "seclang-parser.yy" +#line 2744 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as < std::string > ())); } -#line 5054 "seclang-parser.cc" +#line 5055 "seclang-parser.cc" break; case 368: // act: "Msg" run_time_string -#line 2747 "seclang-parser.yy" +#line 2748 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Msg(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5062 "seclang-parser.cc" +#line 5063 "seclang-parser.cc" break; case 369: // act: "MultiMatch" -#line 2751 "seclang-parser.yy" +#line 2752 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::MultiMatch()); } -#line 5070 "seclang-parser.cc" +#line 5071 "seclang-parser.cc" break; case 370: // act: "NoAuditLog" -#line 2755 "seclang-parser.yy" +#line 2756 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::NoAuditLog()); } -#line 5078 "seclang-parser.cc" +#line 5079 "seclang-parser.cc" break; case 371: // act: "NoLog" -#line 2759 "seclang-parser.yy" +#line 2760 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::NoLog()); } -#line 5086 "seclang-parser.cc" +#line 5087 "seclang-parser.cc" break; case 372: // act: "Pass" -#line 2763 "seclang-parser.yy" +#line 2764 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Pass()); } -#line 5094 "seclang-parser.cc" +#line 5095 "seclang-parser.cc" break; case 373: // act: "Pause" -#line 2767 "seclang-parser.yy" +#line 2768 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); } -#line 5102 "seclang-parser.cc" +#line 5103 "seclang-parser.cc" break; case 374: // act: "Phase" -#line 2771 "seclang-parser.yy" +#line 2772 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Phase(yystack_[0].value.as < std::string > ())); } -#line 5110 "seclang-parser.cc" +#line 5111 "seclang-parser.cc" break; case 375: // act: "Prepend" -#line 2775 "seclang-parser.yy" +#line 2776 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); } -#line 5118 "seclang-parser.cc" +#line 5119 "seclang-parser.cc" break; case 376: // act: "Proxy" -#line 2779 "seclang-parser.yy" +#line 2780 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); } -#line 5126 "seclang-parser.cc" +#line 5127 "seclang-parser.cc" break; case 377: // act: "Redirect" run_time_string -#line 2783 "seclang-parser.yy" +#line 2784 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Redirect(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5134 "seclang-parser.cc" +#line 5135 "seclang-parser.cc" break; case 378: // act: "Rev" -#line 2787 "seclang-parser.yy" +#line 2788 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Rev(yystack_[0].value.as < std::string > ())); } -#line 5142 "seclang-parser.cc" +#line 5143 "seclang-parser.cc" break; case 379: // act: "SanitiseArg" -#line 2791 "seclang-parser.yy" +#line 2792 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseArg", yystack_[1].location); } -#line 5150 "seclang-parser.cc" +#line 5151 "seclang-parser.cc" break; case 380: // act: "SanitiseMatched" -#line 2795 "seclang-parser.yy" +#line 2796 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseMatched", yystack_[1].location); } -#line 5158 "seclang-parser.cc" +#line 5159 "seclang-parser.cc" break; case 381: // act: "SanitiseMatchedBytes" -#line 2799 "seclang-parser.yy" +#line 2800 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseMatchedBytes", yystack_[1].location); } -#line 5166 "seclang-parser.cc" +#line 5167 "seclang-parser.cc" break; case 382: // act: "SanitiseRequestHeader" -#line 2803 "seclang-parser.yy" +#line 2804 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseRequestHeader", yystack_[1].location); } -#line 5174 "seclang-parser.cc" +#line 5175 "seclang-parser.cc" break; case 383: // act: "SanitiseResponseHeader" -#line 2807 "seclang-parser.yy" +#line 2808 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseResponseHeader", yystack_[1].location); } -#line 5182 "seclang-parser.cc" +#line 5183 "seclang-parser.cc" break; case 384: // act: "SetEnv" run_time_string -#line 2811 "seclang-parser.yy" +#line 2812 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetENV(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5190 "seclang-parser.cc" +#line 5191 "seclang-parser.cc" break; case 385: // act: "SetRsc" run_time_string -#line 2815 "seclang-parser.yy" +#line 2816 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetRSC(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5198 "seclang-parser.cc" +#line 5199 "seclang-parser.cc" break; case 386: // act: "SetSid" run_time_string -#line 2819 "seclang-parser.yy" +#line 2820 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetSID(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5206 "seclang-parser.cc" +#line 5207 "seclang-parser.cc" break; case 387: // act: "SetUID" run_time_string -#line 2823 "seclang-parser.yy" +#line 2824 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetUID(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5214 "seclang-parser.cc" +#line 5215 "seclang-parser.cc" break; case 388: // act: "SetVar" setvar_action -#line 2827 "seclang-parser.yy" +#line 2828 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > () = std::move(yystack_[0].value.as < std::unique_ptr > ()); } -#line 5222 "seclang-parser.cc" +#line 5223 "seclang-parser.cc" break; case 389: // act: "Severity" -#line 2831 "seclang-parser.yy" +#line 2832 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Severity(yystack_[0].value.as < std::string > ())); } -#line 5230 "seclang-parser.cc" +#line 5231 "seclang-parser.cc" break; case 390: // act: "Skip" -#line 2835 "seclang-parser.yy" +#line 2836 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Skip(yystack_[0].value.as < std::string > ())); } -#line 5238 "seclang-parser.cc" +#line 5239 "seclang-parser.cc" break; case 391: // act: "SkipAfter" -#line 2839 "seclang-parser.yy" +#line 2840 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as < std::string > ())); } -#line 5246 "seclang-parser.cc" +#line 5247 "seclang-parser.cc" break; case 392: // act: "Status" -#line 2843 "seclang-parser.yy" +#line 2844 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as < std::string > ())); } -#line 5254 "seclang-parser.cc" +#line 5255 "seclang-parser.cc" break; case 393: // act: "Tag" run_time_string -#line 2847 "seclang-parser.yy" +#line 2848 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Tag(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5262 "seclang-parser.cc" +#line 5263 "seclang-parser.cc" break; case 394: // act: "Ver" -#line 2851 "seclang-parser.yy" +#line 2852 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Ver(yystack_[0].value.as < std::string > ())); } -#line 5270 "seclang-parser.cc" +#line 5271 "seclang-parser.cc" break; case 395: // act: "xmlns" -#line 2855 "seclang-parser.yy" +#line 2856 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as < std::string > ())); } -#line 5278 "seclang-parser.cc" +#line 5279 "seclang-parser.cc" break; case 396: // act: "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT" -#line 2859 "seclang-parser.yy" +#line 2860 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityZero7bit()); } -#line 5286 "seclang-parser.cc" +#line 5287 "seclang-parser.cc" break; case 397: // act: "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT" -#line 2863 "seclang-parser.yy" +#line 2864 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityOdd7bit()); } -#line 5294 "seclang-parser.cc" +#line 5295 "seclang-parser.cc" break; case 398: // act: "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT" -#line 2867 "seclang-parser.yy" +#line 2868 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityEven7bit()); } -#line 5302 "seclang-parser.cc" +#line 5303 "seclang-parser.cc" break; case 399: // act: "ACTION_TRANSFORMATION_SQL_HEX_DECODE" -#line 2871 "seclang-parser.yy" +#line 2872 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::SqlHexDecode()); } -#line 5310 "seclang-parser.cc" +#line 5311 "seclang-parser.cc" break; case 400: // act: "ACTION_TRANSFORMATION_BASE_64_ENCODE" -#line 2875 "seclang-parser.yy" +#line 2876 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64Encode()); } -#line 5318 "seclang-parser.cc" +#line 5319 "seclang-parser.cc" break; case 401: // act: "ACTION_TRANSFORMATION_BASE_64_DECODE" -#line 2879 "seclang-parser.yy" +#line 2880 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64Decode()); } -#line 5326 "seclang-parser.cc" +#line 5327 "seclang-parser.cc" break; case 402: // act: "ACTION_TRANSFORMATION_BASE_64_DECODE_EXT" -#line 2883 "seclang-parser.yy" +#line 2884 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64DecodeExt()); } -#line 5334 "seclang-parser.cc" +#line 5335 "seclang-parser.cc" break; case 403: // act: "ACTION_TRANSFORMATION_CMD_LINE" -#line 2887 "seclang-parser.yy" +#line 2888 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CmdLine()); } -#line 5342 "seclang-parser.cc" +#line 5343 "seclang-parser.cc" break; case 404: // act: "ACTION_TRANSFORMATION_SHA1" -#line 2891 "seclang-parser.yy" +#line 2892 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Sha1()); } -#line 5350 "seclang-parser.cc" +#line 5351 "seclang-parser.cc" break; case 405: // act: "ACTION_TRANSFORMATION_MD5" -#line 2895 "seclang-parser.yy" +#line 2896 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Md5()); } -#line 5358 "seclang-parser.cc" +#line 5359 "seclang-parser.cc" break; case 406: // act: "ACTION_TRANSFORMATION_ESCAPE_SEQ_DECODE" -#line 2899 "seclang-parser.yy" +#line 2900 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::EscapeSeqDecode()); } -#line 5366 "seclang-parser.cc" +#line 5367 "seclang-parser.cc" break; case 407: // act: "ACTION_TRANSFORMATION_HEX_ENCODE" -#line 2903 "seclang-parser.yy" +#line 2904 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HexEncode()); } -#line 5374 "seclang-parser.cc" +#line 5375 "seclang-parser.cc" break; case 408: // act: "ACTION_TRANSFORMATION_HEX_DECODE" -#line 2907 "seclang-parser.yy" +#line 2908 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HexDecode()); } -#line 5382 "seclang-parser.cc" +#line 5383 "seclang-parser.cc" break; case 409: // act: "ACTION_TRANSFORMATION_LOWERCASE" -#line 2911 "seclang-parser.yy" +#line 2912 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::LowerCase()); } -#line 5390 "seclang-parser.cc" +#line 5391 "seclang-parser.cc" break; case 410: // act: "ACTION_TRANSFORMATION_UPPERCASE" -#line 2915 "seclang-parser.yy" +#line 2916 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UpperCase()); } -#line 5398 "seclang-parser.cc" +#line 5399 "seclang-parser.cc" break; case 411: // act: "ACTION_TRANSFORMATION_URL_DECODE_UNI" -#line 2919 "seclang-parser.yy" +#line 2920 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlDecodeUni()); } -#line 5406 "seclang-parser.cc" +#line 5407 "seclang-parser.cc" break; case 412: // act: "ACTION_TRANSFORMATION_URL_DECODE" -#line 2923 "seclang-parser.yy" +#line 2924 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlDecode()); } -#line 5414 "seclang-parser.cc" +#line 5415 "seclang-parser.cc" break; case 413: // act: "ACTION_TRANSFORMATION_URL_ENCODE" -#line 2927 "seclang-parser.yy" +#line 2928 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlEncode()); } -#line 5422 "seclang-parser.cc" +#line 5423 "seclang-parser.cc" break; case 414: // act: "ACTION_TRANSFORMATION_NONE" -#line 2931 "seclang-parser.yy" +#line 2932 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::None()); } -#line 5430 "seclang-parser.cc" +#line 5431 "seclang-parser.cc" break; case 415: // act: "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE" -#line 2935 "seclang-parser.yy" +#line 2936 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CompressWhitespace()); } -#line 5438 "seclang-parser.cc" +#line 5439 "seclang-parser.cc" break; case 416: // act: "ACTION_TRANSFORMATION_REMOVE_WHITESPACE" -#line 2939 "seclang-parser.yy" +#line 2940 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveWhitespace()); } -#line 5446 "seclang-parser.cc" +#line 5447 "seclang-parser.cc" break; case 417: // act: "ACTION_TRANSFORMATION_REPLACE_NULLS" -#line 2943 "seclang-parser.yy" +#line 2944 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ReplaceNulls()); } -#line 5454 "seclang-parser.cc" +#line 5455 "seclang-parser.cc" break; case 418: // act: "ACTION_TRANSFORMATION_REMOVE_NULLS" -#line 2947 "seclang-parser.yy" +#line 2948 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveNulls()); } -#line 5462 "seclang-parser.cc" +#line 5463 "seclang-parser.cc" break; case 419: // act: "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE" -#line 2951 "seclang-parser.yy" +#line 2952 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HtmlEntityDecode()); } -#line 5470 "seclang-parser.cc" +#line 5471 "seclang-parser.cc" break; case 420: // act: "ACTION_TRANSFORMATION_JS_DECODE" -#line 2955 "seclang-parser.yy" +#line 2956 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::JsDecode()); } -#line 5478 "seclang-parser.cc" +#line 5479 "seclang-parser.cc" break; case 421: // act: "ACTION_TRANSFORMATION_CSS_DECODE" -#line 2959 "seclang-parser.yy" +#line 2960 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CssDecode()); } -#line 5486 "seclang-parser.cc" +#line 5487 "seclang-parser.cc" break; case 422: // act: "ACTION_TRANSFORMATION_TRIM" -#line 2963 "seclang-parser.yy" +#line 2964 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Trim()); } -#line 5494 "seclang-parser.cc" +#line 5495 "seclang-parser.cc" break; case 423: // act: "ACTION_TRANSFORMATION_TRIM_LEFT" -#line 2967 "seclang-parser.yy" +#line 2968 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::TrimLeft()); } -#line 5502 "seclang-parser.cc" +#line 5503 "seclang-parser.cc" break; case 424: // act: "ACTION_TRANSFORMATION_TRIM_RIGHT" -#line 2971 "seclang-parser.yy" +#line 2972 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::TrimRight()); } -#line 5510 "seclang-parser.cc" +#line 5511 "seclang-parser.cc" break; case 425: // act: "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN" -#line 2975 "seclang-parser.yy" +#line 2976 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::NormalisePathWin()); } -#line 5518 "seclang-parser.cc" +#line 5519 "seclang-parser.cc" break; case 426: // act: "ACTION_TRANSFORMATION_NORMALISE_PATH" -#line 2979 "seclang-parser.yy" +#line 2980 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::NormalisePath()); } -#line 5526 "seclang-parser.cc" +#line 5527 "seclang-parser.cc" break; case 427: // act: "ACTION_TRANSFORMATION_LENGTH" -#line 2983 "seclang-parser.yy" +#line 2984 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Length()); } -#line 5534 "seclang-parser.cc" +#line 5535 "seclang-parser.cc" break; case 428: // act: "ACTION_TRANSFORMATION_UTF8_TO_UNICODE" -#line 2987 "seclang-parser.yy" +#line 2988 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Utf8ToUnicode()); } -#line 5542 "seclang-parser.cc" +#line 5543 "seclang-parser.cc" break; case 429: // act: "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR" -#line 2991 "seclang-parser.yy" +#line 2992 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveCommentsChar()); } -#line 5550 "seclang-parser.cc" +#line 5551 "seclang-parser.cc" break; case 430: // act: "ACTION_TRANSFORMATION_REMOVE_COMMENTS" -#line 2995 "seclang-parser.yy" +#line 2996 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveComments()); } -#line 5558 "seclang-parser.cc" +#line 5559 "seclang-parser.cc" break; case 431: // act: "ACTION_TRANSFORMATION_REPLACE_COMMENTS" -#line 2999 "seclang-parser.yy" +#line 3000 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ReplaceComments()); } -#line 5566 "seclang-parser.cc" +#line 5567 "seclang-parser.cc" break; case 432: // setvar_action: "NOT" var -#line 3006 "seclang-parser.yy" +#line 3007 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::unsetOperation, std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5574 "seclang-parser.cc" +#line 5575 "seclang-parser.cc" break; case 433: // setvar_action: var -#line 3010 "seclang-parser.yy" +#line 3011 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setToOneOperation, std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5582 "seclang-parser.cc" +#line 5583 "seclang-parser.cc" break; case 434: // setvar_action: var SETVAR_OPERATION_EQUALS run_time_string -#line 3014 "seclang-parser.yy" +#line 3015 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5590 "seclang-parser.cc" +#line 5591 "seclang-parser.cc" break; case 435: // setvar_action: var SETVAR_OPERATION_EQUALS_PLUS run_time_string -#line 3018 "seclang-parser.yy" +#line 3019 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::sumAndSetOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5598 "seclang-parser.cc" +#line 5599 "seclang-parser.cc" break; case 436: // setvar_action: var SETVAR_OPERATION_EQUALS_MINUS run_time_string -#line 3022 "seclang-parser.yy" +#line 3023 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::substractAndSetOperation, std::move(yystack_[2].value.as < std::unique_ptr > ()), std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5606 "seclang-parser.cc" +#line 5607 "seclang-parser.cc" break; case 437: // run_time_string: run_time_string "FREE_TEXT_QUOTE_MACRO_EXPANSION" -#line 3029 "seclang-parser.yy" +#line 3030 "seclang-parser.yy" { yystack_[1].value.as < std::unique_ptr > ()->appendText(yystack_[0].value.as < std::string > ()); yylhs.value.as < std::unique_ptr > () = std::move(yystack_[1].value.as < std::unique_ptr > ()); } -#line 5615 "seclang-parser.cc" +#line 5616 "seclang-parser.cc" break; case 438: // run_time_string: run_time_string var -#line 3034 "seclang-parser.yy" +#line 3035 "seclang-parser.yy" { yystack_[1].value.as < std::unique_ptr > ()->appendVar(std::move(yystack_[0].value.as < std::unique_ptr > ())); yylhs.value.as < std::unique_ptr > () = std::move(yystack_[1].value.as < std::unique_ptr > ()); } -#line 5624 "seclang-parser.cc" +#line 5625 "seclang-parser.cc" break; case 439: // run_time_string: "FREE_TEXT_QUOTE_MACRO_EXPANSION" -#line 3039 "seclang-parser.yy" +#line 3040 "seclang-parser.yy" { std::unique_ptr r(new RunTimeString()); r->appendText(yystack_[0].value.as < std::string > ()); yylhs.value.as < std::unique_ptr > () = std::move(r); } -#line 5634 "seclang-parser.cc" +#line 5635 "seclang-parser.cc" break; case 440: // run_time_string: var -#line 3045 "seclang-parser.yy" +#line 3046 "seclang-parser.yy" { std::unique_ptr r(new RunTimeString()); r->appendVar(std::move(yystack_[0].value.as < std::unique_ptr > ())); yylhs.value.as < std::unique_ptr > () = std::move(r); } -#line 5644 "seclang-parser.cc" +#line 5645 "seclang-parser.cc" break; -#line 5648 "seclang-parser.cc" +#line 5649 "seclang-parser.cc" default: break; @@ -7145,43 +7146,43 @@ namespace yy { 966, 970, 974, 979, 984, 988, 992, 996, 1000, 1004, 1008, 1012, 1016, 1020, 1024, 1028, 1032, 1036, 1040, 1044, 1048, 1052, 1056, 1060, 1074, 1075, 1107, 1126, 1147, 1177, - 1234, 1241, 1245, 1249, 1253, 1257, 1261, 1265, 1269, 1278, - 1282, 1287, 1290, 1295, 1300, 1305, 1310, 1313, 1318, 1321, - 1326, 1331, 1334, 1339, 1344, 1349, 1354, 1359, 1364, 1369, - 1372, 1377, 1382, 1387, 1392, 1395, 1400, 1405, 1410, 1423, - 1436, 1449, 1462, 1475, 1501, 1529, 1541, 1561, 1588, 1594, - 1599, 1604, 1613, 1618, 1622, 1626, 1630, 1634, 1638, 1642, - 1647, 1652, 1664, 1670, 1674, 1678, 1689, 1698, 1699, 1706, - 1711, 1716, 1770, 1777, 1785, 1822, 1826, 1833, 1838, 1844, - 1850, 1856, 1863, 1873, 1877, 1881, 1885, 1889, 1893, 1897, - 1901, 1905, 1909, 1913, 1917, 1921, 1925, 1929, 1933, 1937, - 1941, 1945, 1949, 1953, 1957, 1961, 1965, 1969, 1973, 1977, - 1981, 1985, 1989, 1993, 1997, 2001, 2005, 2009, 2013, 2017, - 2021, 2025, 2029, 2033, 2037, 2041, 2045, 2049, 2053, 2057, - 2061, 2065, 2069, 2073, 2077, 2081, 2085, 2089, 2093, 2097, - 2101, 2105, 2109, 2113, 2117, 2121, 2125, 2129, 2133, 2137, - 2141, 2145, 2149, 2153, 2157, 2161, 2165, 2169, 2173, 2177, - 2181, 2185, 2189, 2193, 2197, 2201, 2205, 2209, 2213, 2217, - 2221, 2225, 2229, 2234, 2238, 2242, 2247, 2251, 2255, 2260, - 2265, 2269, 2273, 2277, 2281, 2285, 2289, 2293, 2297, 2301, - 2305, 2309, 2313, 2317, 2321, 2325, 2329, 2333, 2337, 2341, - 2345, 2349, 2353, 2357, 2361, 2365, 2369, 2373, 2377, 2381, - 2385, 2389, 2393, 2397, 2401, 2405, 2409, 2413, 2417, 2421, - 2425, 2429, 2433, 2437, 2441, 2445, 2449, 2453, 2457, 2461, - 2465, 2469, 2473, 2477, 2481, 2485, 2489, 2493, 2497, 2501, - 2505, 2513, 2520, 2527, 2534, 2541, 2548, 2555, 2562, 2569, - 2576, 2583, 2590, 2600, 2604, 2608, 2612, 2616, 2620, 2624, - 2628, 2633, 2638, 2643, 2647, 2651, 2655, 2659, 2664, 2669, - 2673, 2677, 2681, 2685, 2689, 2693, 2697, 2701, 2705, 2709, - 2713, 2717, 2721, 2726, 2730, 2734, 2738, 2742, 2746, 2750, - 2754, 2758, 2762, 2766, 2770, 2774, 2778, 2782, 2786, 2790, - 2794, 2798, 2802, 2806, 2810, 2814, 2818, 2822, 2826, 2830, - 2834, 2838, 2842, 2846, 2850, 2854, 2858, 2862, 2866, 2870, - 2874, 2878, 2882, 2886, 2890, 2894, 2898, 2902, 2906, 2910, - 2914, 2918, 2922, 2926, 2930, 2934, 2938, 2942, 2946, 2950, - 2954, 2958, 2962, 2966, 2970, 2974, 2978, 2982, 2986, 2990, - 2994, 2998, 3005, 3009, 3013, 3017, 3021, 3028, 3033, 3038, - 3044 + 1235, 1242, 1246, 1250, 1254, 1258, 1262, 1266, 1270, 1279, + 1283, 1288, 1291, 1296, 1301, 1306, 1311, 1314, 1319, 1322, + 1327, 1332, 1335, 1340, 1345, 1350, 1355, 1360, 1365, 1370, + 1373, 1378, 1383, 1388, 1393, 1396, 1401, 1406, 1411, 1424, + 1437, 1450, 1463, 1476, 1502, 1530, 1542, 1562, 1589, 1595, + 1600, 1605, 1614, 1619, 1623, 1627, 1631, 1635, 1639, 1643, + 1648, 1653, 1665, 1671, 1675, 1679, 1690, 1699, 1700, 1707, + 1712, 1717, 1771, 1778, 1786, 1823, 1827, 1834, 1839, 1845, + 1851, 1857, 1864, 1874, 1878, 1882, 1886, 1890, 1894, 1898, + 1902, 1906, 1910, 1914, 1918, 1922, 1926, 1930, 1934, 1938, + 1942, 1946, 1950, 1954, 1958, 1962, 1966, 1970, 1974, 1978, + 1982, 1986, 1990, 1994, 1998, 2002, 2006, 2010, 2014, 2018, + 2022, 2026, 2030, 2034, 2038, 2042, 2046, 2050, 2054, 2058, + 2062, 2066, 2070, 2074, 2078, 2082, 2086, 2090, 2094, 2098, + 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2130, 2134, 2138, + 2142, 2146, 2150, 2154, 2158, 2162, 2166, 2170, 2174, 2178, + 2182, 2186, 2190, 2194, 2198, 2202, 2206, 2210, 2214, 2218, + 2222, 2226, 2230, 2235, 2239, 2243, 2248, 2252, 2256, 2261, + 2266, 2270, 2274, 2278, 2282, 2286, 2290, 2294, 2298, 2302, + 2306, 2310, 2314, 2318, 2322, 2326, 2330, 2334, 2338, 2342, + 2346, 2350, 2354, 2358, 2362, 2366, 2370, 2374, 2378, 2382, + 2386, 2390, 2394, 2398, 2402, 2406, 2410, 2414, 2418, 2422, + 2426, 2430, 2434, 2438, 2442, 2446, 2450, 2454, 2458, 2462, + 2466, 2470, 2474, 2478, 2482, 2486, 2490, 2494, 2498, 2502, + 2506, 2514, 2521, 2528, 2535, 2542, 2549, 2556, 2563, 2570, + 2577, 2584, 2591, 2601, 2605, 2609, 2613, 2617, 2621, 2625, + 2629, 2634, 2639, 2644, 2648, 2652, 2656, 2660, 2665, 2670, + 2674, 2678, 2682, 2686, 2690, 2694, 2698, 2702, 2706, 2710, + 2714, 2718, 2722, 2727, 2731, 2735, 2739, 2743, 2747, 2751, + 2755, 2759, 2763, 2767, 2771, 2775, 2779, 2783, 2787, 2791, + 2795, 2799, 2803, 2807, 2811, 2815, 2819, 2823, 2827, 2831, + 2835, 2839, 2843, 2847, 2851, 2855, 2859, 2863, 2867, 2871, + 2875, 2879, 2883, 2887, 2891, 2895, 2899, 2903, 2907, 2911, + 2915, 2919, 2923, 2927, 2931, 2935, 2939, 2943, 2947, 2951, + 2955, 2959, 2963, 2967, 2971, 2975, 2979, 2983, 2987, 2991, + 2995, 2999, 3006, 3010, 3014, 3018, 3022, 3029, 3034, 3039, + 3045 }; void @@ -7213,9 +7214,9 @@ namespace yy { } // yy -#line 7217 "seclang-parser.cc" +#line 7218 "seclang-parser.cc" -#line 3051 "seclang-parser.yy" +#line 3052 "seclang-parser.yy" void yy::seclang_parser::error (const location_type& l, const std::string& m) { diff --git a/src/parser/seclang-parser.yy b/src/parser/seclang-parser.yy index 0dd96771..2fe54952 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -1186,7 +1186,8 @@ expression: int secRuleDefinedPhase = -1; for (actions::Action *a : *actions) { actions::Phase *phase = dynamic_cast(a); - if (a->isDisruptive() == true && dynamic_cast(a) == NULL) { + if (dynamic_cast(a) != NULL + && dynamic_cast(a) == NULL) { hasDisruptive = true; } if (phase != NULL) { diff --git a/src/rule_with_actions.cc b/src/rule_with_actions.cc index 98e211db..36cdfa72 100644 --- a/src/rule_with_actions.cc +++ b/src/rule_with_actions.cc @@ -43,6 +43,7 @@ #include "src/actions/set_var.h" #include "src/actions/severity.h" #include "src/actions/tag.h" +#include "src/actions/disruptive/disruptive_action.h" #include "src/actions/transformations/transformation.h" #include "src/actions/transformations/none.h" #include "src/actions/xmlns.h" @@ -142,7 +143,7 @@ void RuleWithActions::addDefaultAction(std::shared_ptr a) { } else if (dynamic_cast(a.get())) { m_defaultActionActionsRuntimePos.push_back(a); m_defaultContainsStaticBlockAction = true; - } else if (a->isDisruptive() == true) { + } else if (std::dynamic_pointer_cast(a) != NULL) { m_defaultActionDisruptiveAction = a; } else { m_defaultActionActionsRuntimePos.push_back(a); @@ -179,7 +180,7 @@ void RuleWithActions::addAction(actions::Action *a) { m_containsStaticBlockAction = true; } else if (dynamic_cast(a)) { m_XmlNSs.push_back(std::unique_ptr(dynamic_cast(a))); - } else if (a->isDisruptive() == true) { + } else if (dynamic_cast(a) != NULL) { m_disruptiveAction = std::unique_ptr(a); } else { m_actionsRuntimePos.push_back(std::unique_ptr(a)); @@ -229,11 +230,11 @@ void RuleWithActions::executeActionsAfterFullMatch(Transaction *trans) { continue; } actions::Action *a = dynamic_cast(b.second.get()); - if (a->isDisruptive()) { + if (dynamic_cast(a)) { trans->messageGetLast()->setRule(this); } executeAction(trans, a, false); - if (a->isDisruptive()) { + if (dynamic_cast(a)) { disruptiveAlreadyExecuted = true; } } @@ -251,7 +252,7 @@ void RuleWithActions::executeActionsAfterFullMatch(Transaction *trans) { } for (auto &a : getMatchActionsPtr()) { - if (!a->isDisruptive() + if (!dynamic_cast(a) && !(disruptiveAlreadyExecuted && dynamic_cast(a))) { executeAction(trans, a, false); @@ -271,7 +272,7 @@ void RuleWithActions::executeActionsAfterFullMatch(Transaction *trans) { void RuleWithActions::executeAction(Transaction *trans, Action *a, bool defaultContext) { - if (a->isDisruptive() == false) { + if (dynamic_cast(a) == NULL) { ms_dbg_a(trans, 9, "Running action: " + *a->getName()); a->execute(trans); return;