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 4ea0dc9e..cb910430 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -2401,7 +2401,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) { @@ -2446,78 +2447,78 @@ namespace yy { delete actions; } -#line 2450 "seclang-parser.cc" +#line 2451 "seclang-parser.cc" break; case 79: -#line 1229 "seclang-parser.yy" +#line 1230 "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 2461 "seclang-parser.cc" +#line 2462 "seclang-parser.cc" break; case 80: -#line 1236 "seclang-parser.yy" +#line 1237 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::DisabledRuleEngine; } -#line 2469 "seclang-parser.cc" +#line 2470 "seclang-parser.cc" break; case 81: -#line 1240 "seclang-parser.yy" +#line 1241 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::EnabledRuleEngine; } -#line 2477 "seclang-parser.cc" +#line 2478 "seclang-parser.cc" break; case 82: -#line 1244 "seclang-parser.yy" +#line 1245 "seclang-parser.yy" { driver.m_secRuleEngine = modsecurity::RulesSet::DetectionOnlyRuleEngine; } -#line 2485 "seclang-parser.cc" +#line 2486 "seclang-parser.cc" break; case 83: -#line 1248 "seclang-parser.yy" +#line 1249 "seclang-parser.yy" { driver.m_secRequestBodyAccess = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 2493 "seclang-parser.cc" +#line 2494 "seclang-parser.cc" break; case 84: -#line 1252 "seclang-parser.yy" +#line 1253 "seclang-parser.yy" { driver.m_secRequestBodyAccess = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 2501 "seclang-parser.cc" +#line 2502 "seclang-parser.cc" break; case 85: -#line 1256 "seclang-parser.yy" +#line 1257 "seclang-parser.yy" { driver.m_secResponseBodyAccess = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 2509 "seclang-parser.cc" +#line 2510 "seclang-parser.cc" break; case 86: -#line 1260 "seclang-parser.yy" +#line 1261 "seclang-parser.yy" { driver.m_secResponseBodyAccess = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 2517 "seclang-parser.cc" +#line 2518 "seclang-parser.cc" break; case 87: -#line 1264 "seclang-parser.yy" +#line 1265 "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."); @@ -2526,259 +2527,259 @@ namespace yy { driver.m_secArgumentSeparator.m_value = yystack_[0].value.as < std::string > (); driver.m_secArgumentSeparator.m_set = true; } -#line 2530 "seclang-parser.cc" +#line 2531 "seclang-parser.cc" break; case 88: -#line 1273 "seclang-parser.yy" +#line 1274 "seclang-parser.yy" { driver.m_components.push_back(yystack_[0].value.as < std::string > ()); } -#line 2538 "seclang-parser.cc" +#line 2539 "seclang-parser.cc" break; case 89: -#line 1277 "seclang-parser.yy" +#line 1278 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecConnEngine is not yet supported."); YYERROR; } -#line 2547 "seclang-parser.cc" +#line 2548 "seclang-parser.cc" break; case 90: -#line 1282 "seclang-parser.yy" +#line 1283 "seclang-parser.yy" { } -#line 2554 "seclang-parser.cc" +#line 2555 "seclang-parser.cc" break; case 91: -#line 1285 "seclang-parser.yy" +#line 1286 "seclang-parser.yy" { driver.m_secWebAppId.m_value = yystack_[0].value.as < std::string > (); driver.m_secWebAppId.m_set = true; } -#line 2563 "seclang-parser.cc" +#line 2564 "seclang-parser.cc" break; case 92: -#line 1290 "seclang-parser.yy" +#line 1291 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecServerSignature is not supported."); YYERROR; } -#line 2572 "seclang-parser.cc" +#line 2573 "seclang-parser.cc" break; case 93: -#line 1295 "seclang-parser.yy" +#line 1296 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecCacheTransformations is not supported."); YYERROR; } -#line 2581 "seclang-parser.cc" +#line 2582 "seclang-parser.cc" break; case 94: -#line 1300 "seclang-parser.yy" +#line 1301 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecDisableBackendCompression is not supported."); YYERROR; } -#line 2590 "seclang-parser.cc" +#line 2591 "seclang-parser.cc" break; case 95: -#line 1305 "seclang-parser.yy" +#line 1306 "seclang-parser.yy" { } -#line 2597 "seclang-parser.cc" +#line 2598 "seclang-parser.cc" break; case 96: -#line 1308 "seclang-parser.yy" +#line 1309 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecContentInjection is not yet supported."); YYERROR; } -#line 2606 "seclang-parser.cc" +#line 2607 "seclang-parser.cc" break; case 97: -#line 1313 "seclang-parser.yy" +#line 1314 "seclang-parser.yy" { } -#line 2613 "seclang-parser.cc" +#line 2614 "seclang-parser.cc" break; case 98: -#line 1316 "seclang-parser.yy" +#line 1317 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecChrootDir is not supported."); YYERROR; } -#line 2622 "seclang-parser.cc" +#line 2623 "seclang-parser.cc" break; case 99: -#line 1321 "seclang-parser.yy" +#line 1322 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecHashEngine is not yet supported."); YYERROR; } -#line 2631 "seclang-parser.cc" +#line 2632 "seclang-parser.cc" break; case 100: -#line 1326 "seclang-parser.yy" +#line 1327 "seclang-parser.yy" { } -#line 2638 "seclang-parser.cc" +#line 2639 "seclang-parser.cc" break; case 101: -#line 1329 "seclang-parser.yy" +#line 1330 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashKey is not yet supported."); YYERROR; } -#line 2647 "seclang-parser.cc" +#line 2648 "seclang-parser.cc" break; case 102: -#line 1334 "seclang-parser.yy" +#line 1335 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashParam is not yet supported."); YYERROR; } -#line 2656 "seclang-parser.cc" +#line 2657 "seclang-parser.cc" break; case 103: -#line 1339 "seclang-parser.yy" +#line 1340 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashMethodRx is not yet supported."); YYERROR; } -#line 2665 "seclang-parser.cc" +#line 2666 "seclang-parser.cc" break; case 104: -#line 1344 "seclang-parser.yy" +#line 1345 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecHashMethodPm is not yet supported."); YYERROR; } -#line 2674 "seclang-parser.cc" +#line 2675 "seclang-parser.cc" break; case 105: -#line 1349 "seclang-parser.yy" +#line 1350 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecGsbLookupDb is not supported."); YYERROR; } -#line 2683 "seclang-parser.cc" +#line 2684 "seclang-parser.cc" break; case 106: -#line 1354 "seclang-parser.yy" +#line 1355 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecGuardianLog is not supported."); YYERROR; } -#line 2692 "seclang-parser.cc" +#line 2693 "seclang-parser.cc" break; case 107: -#line 1359 "seclang-parser.yy" +#line 1360 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecInterceptOnError is not yet supported."); YYERROR; } -#line 2701 "seclang-parser.cc" +#line 2702 "seclang-parser.cc" break; case 108: -#line 1364 "seclang-parser.yy" +#line 1365 "seclang-parser.yy" { } -#line 2708 "seclang-parser.cc" +#line 2709 "seclang-parser.cc" break; case 109: -#line 1367 "seclang-parser.yy" +#line 1368 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecConnReadStateLimit is not yet supported."); YYERROR; } -#line 2717 "seclang-parser.cc" +#line 2718 "seclang-parser.cc" break; case 110: -#line 1372 "seclang-parser.yy" +#line 1373 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecConnWriteStateLimit is not yet supported."); YYERROR; } -#line 2726 "seclang-parser.cc" +#line 2727 "seclang-parser.cc" break; case 111: -#line 1377 "seclang-parser.yy" +#line 1378 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecSensorId is not yet supported."); YYERROR; } -#line 2735 "seclang-parser.cc" +#line 2736 "seclang-parser.cc" break; case 112: -#line 1382 "seclang-parser.yy" +#line 1383 "seclang-parser.yy" { driver.error(yystack_[2].location, "SecRuleInheritance is not yet supported."); YYERROR; } -#line 2744 "seclang-parser.cc" +#line 2745 "seclang-parser.cc" break; case 113: -#line 1387 "seclang-parser.yy" +#line 1388 "seclang-parser.yy" { } -#line 2751 "seclang-parser.cc" +#line 2752 "seclang-parser.cc" break; case 114: -#line 1390 "seclang-parser.yy" +#line 1391 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecRulePerfTime is not yet supported."); YYERROR; } -#line 2760 "seclang-parser.cc" +#line 2761 "seclang-parser.cc" break; case 115: -#line 1395 "seclang-parser.yy" +#line 1396 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecStreamInBodyInspection is not supported."); YYERROR; } -#line 2769 "seclang-parser.cc" +#line 2770 "seclang-parser.cc" break; case 116: -#line 1400 "seclang-parser.yy" +#line 1401 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecStreamOutBodyInspection is not supported."); YYERROR; } -#line 2778 "seclang-parser.cc" +#line 2779 "seclang-parser.cc" break; case 117: -#line 1405 "seclang-parser.yy" +#line 1406 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.load(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2791,11 +2792,11 @@ namespace yy { YYERROR; } } -#line 2795 "seclang-parser.cc" +#line 2796 "seclang-parser.cc" break; case 118: -#line 1418 "seclang-parser.yy" +#line 1419 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadRemoveRuleByTag(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2808,11 +2809,11 @@ namespace yy { YYERROR; } } -#line 2812 "seclang-parser.cc" +#line 2813 "seclang-parser.cc" break; case 119: -#line 1431 "seclang-parser.yy" +#line 1432 "seclang-parser.yy" { std::string error; if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as < std::string > (), &error) == false) { @@ -2825,11 +2826,11 @@ namespace yy { YYERROR; } } -#line 2829 "seclang-parser.cc" +#line 2830 "seclang-parser.cc" break; case 120: -#line 1444 "seclang-parser.yy" +#line 1445 "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) { @@ -2842,11 +2843,11 @@ namespace yy { YYERROR; } } -#line 2846 "seclang-parser.cc" +#line 2847 "seclang-parser.cc" break; case 121: -#line 1457 "seclang-parser.yy" +#line 1458 "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) { @@ -2859,11 +2860,11 @@ namespace yy { YYERROR; } } -#line 2863 "seclang-parser.cc" +#line 2864 "seclang-parser.cc" break; case 122: -#line 1470 "seclang-parser.yy" +#line 1471 "seclang-parser.yy" { std::string error; double ruleId; @@ -2889,11 +2890,11 @@ namespace yy { YYERROR; } } -#line 2893 "seclang-parser.cc" +#line 2894 "seclang-parser.cc" break; case 123: -#line 1496 "seclang-parser.yy" +#line 1497 "seclang-parser.yy" { std::string error; double ruleId; @@ -2920,11 +2921,11 @@ namespace yy { YYERROR; } } -#line 2924 "seclang-parser.cc" +#line 2925 "seclang-parser.cc" break; case 124: -#line 1524 "seclang-parser.yy" +#line 1525 "seclang-parser.yy" { if (driver.m_debugLog != NULL) { driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as < std::string > ().c_str())); @@ -2936,11 +2937,11 @@ namespace yy { YYERROR; } } -#line 2940 "seclang-parser.cc" +#line 2941 "seclang-parser.cc" break; case 125: -#line 1536 "seclang-parser.yy" +#line 1537 "seclang-parser.yy" { if (driver.m_debugLog != NULL) { std::string error; @@ -2959,11 +2960,11 @@ namespace yy { YYERROR; } } -#line 2963 "seclang-parser.cc" +#line 2964 "seclang-parser.cc" break; case 126: -#line 1556 "seclang-parser.yy" +#line 1557 "seclang-parser.yy" { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) std::string err; @@ -2990,38 +2991,38 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 2994 "seclang-parser.cc" +#line 2995 "seclang-parser.cc" break; case 127: -#line 1583 "seclang-parser.yy" +#line 1584 "seclang-parser.yy" { driver.m_argumentsLimit.m_set = true; driver.m_argumentsLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3003 "seclang-parser.cc" +#line 3004 "seclang-parser.cc" break; case 128: -#line 1589 "seclang-parser.yy" +#line 1590 "seclang-parser.yy" { driver.m_requestBodyLimit.m_set = true; driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3012 "seclang-parser.cc" +#line 3013 "seclang-parser.cc" break; case 129: -#line 1594 "seclang-parser.yy" +#line 1595 "seclang-parser.yy" { driver.m_requestBodyNoFilesLimit.m_set = true; driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3021 "seclang-parser.cc" +#line 3022 "seclang-parser.cc" break; case 130: -#line 1599 "seclang-parser.yy" +#line 1600 "seclang-parser.yy" { std::stringstream ss; ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer "; @@ -3030,68 +3031,68 @@ namespace yy { driver.error(yystack_[1].location, ss.str()); YYERROR; } -#line 3034 "seclang-parser.cc" +#line 3035 "seclang-parser.cc" break; case 131: -#line 1608 "seclang-parser.yy" +#line 1609 "seclang-parser.yy" { driver.m_responseBodyLimit.m_set = true; driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as < std::string > ().c_str()); } -#line 3043 "seclang-parser.cc" +#line 3044 "seclang-parser.cc" break; case 132: -#line 1613 "seclang-parser.yy" +#line 1614 "seclang-parser.yy" { driver.m_requestBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 3051 "seclang-parser.cc" +#line 3052 "seclang-parser.cc" break; case 133: -#line 1617 "seclang-parser.yy" +#line 1618 "seclang-parser.yy" { driver.m_requestBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::RejectBodyLimitAction; } -#line 3059 "seclang-parser.cc" +#line 3060 "seclang-parser.cc" break; case 134: -#line 1621 "seclang-parser.yy" +#line 1622 "seclang-parser.yy" { driver.m_responseBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 3067 "seclang-parser.cc" +#line 3068 "seclang-parser.cc" break; case 135: -#line 1625 "seclang-parser.yy" +#line 1626 "seclang-parser.yy" { driver.m_responseBodyLimitAction = modsecurity::RulesSet::BodyLimitAction::RejectBodyLimitAction; } -#line 3075 "seclang-parser.cc" +#line 3076 "seclang-parser.cc" break; case 136: -#line 1629 "seclang-parser.yy" +#line 1630 "seclang-parser.yy" { driver.m_remoteRulesActionOnFailed = RulesSet::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; } -#line 3083 "seclang-parser.cc" +#line 3084 "seclang-parser.cc" break; case 137: -#line 1633 "seclang-parser.yy" +#line 1634 "seclang-parser.yy" { driver.m_remoteRulesActionOnFailed = RulesSet::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; } -#line 3091 "seclang-parser.cc" +#line 3092 "seclang-parser.cc" break; case 140: -#line 1647 "seclang-parser.yy" +#line 1648 "seclang-parser.yy" { std::istringstream buf(yystack_[0].value.as < std::string > ()); std::istream_iterator beg(buf), end; @@ -3103,37 +3104,37 @@ namespace yy { driver.m_responseBodyTypeToBeInspected.m_value.insert(*it); } } -#line 3107 "seclang-parser.cc" +#line 3108 "seclang-parser.cc" break; case 141: -#line 1659 "seclang-parser.yy" +#line 1660 "seclang-parser.yy" { driver.m_responseBodyTypeToBeInspected.m_set = true; driver.m_responseBodyTypeToBeInspected.m_clear = true; driver.m_responseBodyTypeToBeInspected.m_value.clear(); } -#line 3117 "seclang-parser.cc" +#line 3118 "seclang-parser.cc" break; case 142: -#line 1665 "seclang-parser.yy" +#line 1666 "seclang-parser.yy" { driver.m_secXMLExternalEntity = modsecurity::RulesSetProperties::FalseConfigBoolean; } -#line 3125 "seclang-parser.cc" +#line 3126 "seclang-parser.cc" break; case 143: -#line 1669 "seclang-parser.yy" +#line 1670 "seclang-parser.yy" { driver.m_secXMLExternalEntity = modsecurity::RulesSetProperties::TrueConfigBoolean; } -#line 3133 "seclang-parser.cc" +#line 3134 "seclang-parser.cc" break; case 144: -#line 1673 "seclang-parser.yy" +#line 1674 "seclang-parser.yy" { /* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended std::stringstream ss; @@ -3144,31 +3145,31 @@ namespace yy { YYERROR; */ } -#line 3148 "seclang-parser.cc" +#line 3149 "seclang-parser.cc" break; case 147: -#line 1694 "seclang-parser.yy" +#line 1695 "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 3159 "seclang-parser.cc" +#line 3160 "seclang-parser.cc" break; case 148: -#line 1701 "seclang-parser.yy" +#line 1702 "seclang-parser.yy" { driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported."); YYERROR; } -#line 3168 "seclang-parser.cc" +#line 3169 "seclang-parser.cc" break; case 150: -#line 1711 "seclang-parser.yy" +#line 1712 "seclang-parser.yy" { std::string error; std::vector param; @@ -3222,31 +3223,31 @@ namespace yy { } } -#line 3226 "seclang-parser.cc" +#line 3227 "seclang-parser.cc" break; case 151: -#line 1765 "seclang-parser.yy" +#line 1766 "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 3237 "seclang-parser.cc" +#line 3238 "seclang-parser.cc" break; case 152: -#line 1772 "seclang-parser.yy" +#line 1773 "seclang-parser.yy" { driver.m_httpblKey.m_set = true; driver.m_httpblKey.m_value = yystack_[0].value.as < std::string > (); } -#line 3246 "seclang-parser.cc" +#line 3247 "seclang-parser.cc" break; case 153: -#line 1780 "seclang-parser.yy" +#line 1781 "seclang-parser.yy" { std::unique_ptr > > originalList = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); std::unique_ptr>> newList(new std::vector>()); @@ -3280,2363 +3281,2363 @@ namespace yy { } yylhs.value.as < std::unique_ptr > > > () = std::move(newNewList); } -#line 3284 "seclang-parser.cc" +#line 3285 "seclang-parser.cc" break; case 154: -#line 1817 "seclang-parser.yy" +#line 1818 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[0].value.as < std::unique_ptr > > > ()); } -#line 3292 "seclang-parser.cc" +#line 3293 "seclang-parser.cc" break; case 155: -#line 1821 "seclang-parser.yy" +#line 1822 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > > > () = std::move(yystack_[1].value.as < std::unique_ptr > > > ()); } -#line 3300 "seclang-parser.cc" +#line 3301 "seclang-parser.cc" break; case 156: -#line 1828 "seclang-parser.yy" +#line 1829 "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 3309 "seclang-parser.cc" +#line 3310 "seclang-parser.cc" break; case 157: -#line 1833 "seclang-parser.yy" +#line 1834 "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 3319 "seclang-parser.cc" +#line 3320 "seclang-parser.cc" break; case 158: -#line 1839 "seclang-parser.yy" +#line 1840 "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 3329 "seclang-parser.cc" +#line 3330 "seclang-parser.cc" break; case 159: -#line 1845 "seclang-parser.yy" +#line 1846 "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 3339 "seclang-parser.cc" +#line 3340 "seclang-parser.cc" break; case 160: -#line 1851 "seclang-parser.yy" +#line 1852 "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 3350 "seclang-parser.cc" +#line 3351 "seclang-parser.cc" break; case 161: -#line 1858 "seclang-parser.yy" +#line 1859 "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 3361 "seclang-parser.cc" +#line 3362 "seclang-parser.cc" break; case 162: -#line 1868 "seclang-parser.yy" +#line 1869 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3369 "seclang-parser.cc" +#line 3370 "seclang-parser.cc" break; case 163: -#line 1872 "seclang-parser.yy" +#line 1873 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3377 "seclang-parser.cc" +#line 3378 "seclang-parser.cc" break; case 164: -#line 1876 "seclang-parser.yy" +#line 1877 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Args_NoDictElement()); } -#line 3385 "seclang-parser.cc" +#line 3386 "seclang-parser.cc" break; case 165: -#line 1880 "seclang-parser.yy" +#line 1881 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3393 "seclang-parser.cc" +#line 3394 "seclang-parser.cc" break; case 166: -#line 1884 "seclang-parser.yy" +#line 1885 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3401 "seclang-parser.cc" +#line 3402 "seclang-parser.cc" break; case 167: -#line 1888 "seclang-parser.yy" +#line 1889 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPost_NoDictElement()); } -#line 3409 "seclang-parser.cc" +#line 3410 "seclang-parser.cc" break; case 168: -#line 1892 "seclang-parser.yy" +#line 1893 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3417 "seclang-parser.cc" +#line 3418 "seclang-parser.cc" break; case 169: -#line 1896 "seclang-parser.yy" +#line 1897 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3425 "seclang-parser.cc" +#line 3426 "seclang-parser.cc" break; case 170: -#line 1900 "seclang-parser.yy" +#line 1901 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGet_NoDictElement()); } -#line 3433 "seclang-parser.cc" +#line 3434 "seclang-parser.cc" break; case 171: -#line 1904 "seclang-parser.yy" +#line 1905 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3441 "seclang-parser.cc" +#line 3442 "seclang-parser.cc" break; case 172: -#line 1908 "seclang-parser.yy" +#line 1909 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3449 "seclang-parser.cc" +#line 3450 "seclang-parser.cc" break; case 173: -#line 1912 "seclang-parser.yy" +#line 1913 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesSizes_NoDictElement()); } -#line 3457 "seclang-parser.cc" +#line 3458 "seclang-parser.cc" break; case 174: -#line 1916 "seclang-parser.yy" +#line 1917 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3465 "seclang-parser.cc" +#line 3466 "seclang-parser.cc" break; case 175: -#line 1920 "seclang-parser.yy" +#line 1921 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3473 "seclang-parser.cc" +#line 3474 "seclang-parser.cc" break; case 176: -#line 1924 "seclang-parser.yy" +#line 1925 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesNames_NoDictElement()); } -#line 3481 "seclang-parser.cc" +#line 3482 "seclang-parser.cc" break; case 177: -#line 1928 "seclang-parser.yy" +#line 1929 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3489 "seclang-parser.cc" +#line 3490 "seclang-parser.cc" break; case 178: -#line 1932 "seclang-parser.yy" +#line 1933 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3497 "seclang-parser.cc" +#line 3498 "seclang-parser.cc" break; case 179: -#line 1936 "seclang-parser.yy" +#line 1937 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpContent_NoDictElement()); } -#line 3505 "seclang-parser.cc" +#line 3506 "seclang-parser.cc" break; case 180: -#line 1940 "seclang-parser.yy" +#line 1941 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3513 "seclang-parser.cc" +#line 3514 "seclang-parser.cc" break; case 181: -#line 1944 "seclang-parser.yy" +#line 1945 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3521 "seclang-parser.cc" +#line 3522 "seclang-parser.cc" break; case 182: -#line 1948 "seclang-parser.yy" +#line 1949 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartFileName_NoDictElement()); } -#line 3529 "seclang-parser.cc" +#line 3530 "seclang-parser.cc" break; case 183: -#line 1952 "seclang-parser.yy" +#line 1953 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3537 "seclang-parser.cc" +#line 3538 "seclang-parser.cc" break; case 184: -#line 1956 "seclang-parser.yy" +#line 1957 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3545 "seclang-parser.cc" +#line 3546 "seclang-parser.cc" break; case 185: -#line 1960 "seclang-parser.yy" +#line 1961 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultiPartName_NoDictElement()); } -#line 3553 "seclang-parser.cc" +#line 3554 "seclang-parser.cc" break; case 186: -#line 1964 "seclang-parser.yy" +#line 1965 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3561 "seclang-parser.cc" +#line 3562 "seclang-parser.cc" break; case 187: -#line 1968 "seclang-parser.yy" +#line 1969 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3569 "seclang-parser.cc" +#line 3570 "seclang-parser.cc" break; case 188: -#line 1972 "seclang-parser.yy" +#line 1973 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarsNames_NoDictElement()); } -#line 3577 "seclang-parser.cc" +#line 3578 "seclang-parser.cc" break; case 189: -#line 1976 "seclang-parser.yy" +#line 1977 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3585 "seclang-parser.cc" +#line 3586 "seclang-parser.cc" break; case 190: -#line 1980 "seclang-parser.yy" +#line 1981 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3593 "seclang-parser.cc" +#line 3594 "seclang-parser.cc" break; case 191: -#line 1984 "seclang-parser.yy" +#line 1985 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVars_NoDictElement()); } -#line 3601 "seclang-parser.cc" +#line 3602 "seclang-parser.cc" break; case 192: -#line 1988 "seclang-parser.yy" +#line 1989 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3609 "seclang-parser.cc" +#line 3610 "seclang-parser.cc" break; case 193: -#line 1992 "seclang-parser.yy" +#line 1993 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3617 "seclang-parser.cc" +#line 3618 "seclang-parser.cc" break; case 194: -#line 1996 "seclang-parser.yy" +#line 1997 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Files_NoDictElement()); } -#line 3625 "seclang-parser.cc" +#line 3626 "seclang-parser.cc" break; case 195: -#line 2000 "seclang-parser.yy" +#line 2001 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3633 "seclang-parser.cc" +#line 3634 "seclang-parser.cc" break; case 196: -#line 2004 "seclang-parser.yy" +#line 2005 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3641 "seclang-parser.cc" +#line 3642 "seclang-parser.cc" break; case 197: -#line 2008 "seclang-parser.yy" +#line 2009 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookies_NoDictElement()); } -#line 3649 "seclang-parser.cc" +#line 3650 "seclang-parser.cc" break; case 198: -#line 2012 "seclang-parser.yy" +#line 2013 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3657 "seclang-parser.cc" +#line 3658 "seclang-parser.cc" break; case 199: -#line 2016 "seclang-parser.yy" +#line 2017 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3665 "seclang-parser.cc" +#line 3666 "seclang-parser.cc" break; case 200: -#line 2020 "seclang-parser.yy" +#line 2021 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeaders_NoDictElement()); } -#line 3673 "seclang-parser.cc" +#line 3674 "seclang-parser.cc" break; case 201: -#line 2024 "seclang-parser.yy" +#line 2025 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3681 "seclang-parser.cc" +#line 3682 "seclang-parser.cc" break; case 202: -#line 2028 "seclang-parser.yy" +#line 2029 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3689 "seclang-parser.cc" +#line 3690 "seclang-parser.cc" break; case 203: -#line 2032 "seclang-parser.yy" +#line 2033 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeaders_NoDictElement()); } -#line 3697 "seclang-parser.cc" +#line 3698 "seclang-parser.cc" break; case 204: -#line 2036 "seclang-parser.yy" +#line 2037 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3705 "seclang-parser.cc" +#line 3706 "seclang-parser.cc" break; case 205: -#line 2040 "seclang-parser.yy" +#line 2041 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3713 "seclang-parser.cc" +#line 3714 "seclang-parser.cc" break; case 206: -#line 2044 "seclang-parser.yy" +#line 2045 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Geo_NoDictElement()); } -#line 3721 "seclang-parser.cc" +#line 3722 "seclang-parser.cc" break; case 207: -#line 2048 "seclang-parser.yy" +#line 2049 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3729 "seclang-parser.cc" +#line 3730 "seclang-parser.cc" break; case 208: -#line 2052 "seclang-parser.yy" +#line 2053 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3737 "seclang-parser.cc" +#line 3738 "seclang-parser.cc" break; case 209: -#line 2056 "seclang-parser.yy" +#line 2057 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestCookiesNames_NoDictElement()); } -#line 3745 "seclang-parser.cc" +#line 3746 "seclang-parser.cc" break; case 210: -#line 2060 "seclang-parser.yy" +#line 2061 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3753 "seclang-parser.cc" +#line 3754 "seclang-parser.cc" break; case 211: -#line 2064 "seclang-parser.yy" +#line 2065 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3761 "seclang-parser.cc" +#line 3762 "seclang-parser.cc" break; case 212: -#line 2068 "seclang-parser.yy" +#line 2069 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Rule_NoDictElement()); } -#line 3769 "seclang-parser.cc" +#line 3770 "seclang-parser.cc" break; case 213: -#line 2072 "seclang-parser.yy" +#line 2073 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV:" + yystack_[0].value.as < std::string > ())); } -#line 3777 "seclang-parser.cc" +#line 3778 "seclang-parser.cc" break; case 214: -#line 2076 "seclang-parser.yy" +#line 2077 "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: -#line 2080 "seclang-parser.yy" +#line 2081 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Env("ENV")); } -#line 3793 "seclang-parser.cc" +#line 3794 "seclang-parser.cc" break; case 216: -#line 2084 "seclang-parser.yy" +#line 2085 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML("XML:" + yystack_[0].value.as < std::string > ())); } -#line 3801 "seclang-parser.cc" +#line 3802 "seclang-parser.cc" break; case 217: -#line 2088 "seclang-parser.yy" +#line 2089 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML("XML:" + yystack_[0].value.as < std::string > ())); } -#line 3809 "seclang-parser.cc" +#line 3810 "seclang-parser.cc" break; case 218: -#line 2092 "seclang-parser.yy" +#line 2093 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::XML_NoDictElement()); } -#line 3817 "seclang-parser.cc" +#line 3818 "seclang-parser.cc" break; case 219: -#line 2096 "seclang-parser.yy" +#line 2097 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3825 "seclang-parser.cc" +#line 3826 "seclang-parser.cc" break; case 220: -#line 2100 "seclang-parser.yy" +#line 2101 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3833 "seclang-parser.cc" +#line 3834 "seclang-parser.cc" break; case 221: -#line 2104 "seclang-parser.yy" +#line 2105 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesTmpNames_NoDictElement()); } -#line 3841 "seclang-parser.cc" +#line 3842 "seclang-parser.cc" break; case 222: -#line 2108 "seclang-parser.yy" +#line 2109 "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 3849 "seclang-parser.cc" +#line 3850 "seclang-parser.cc" break; case 223: -#line 2112 "seclang-parser.yy" +#line 2113 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3857 "seclang-parser.cc" +#line 3858 "seclang-parser.cc" break; case 224: -#line 2116 "seclang-parser.yy" +#line 2117 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3865 "seclang-parser.cc" +#line 3866 "seclang-parser.cc" break; case 225: -#line 2120 "seclang-parser.yy" +#line 2121 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Resource_NoDictElement()); } -#line 3873 "seclang-parser.cc" +#line 3874 "seclang-parser.cc" break; case 226: -#line 2124 "seclang-parser.yy" +#line 2125 "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 3881 "seclang-parser.cc" +#line 3882 "seclang-parser.cc" break; case 227: -#line 2128 "seclang-parser.yy" +#line 2129 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3889 "seclang-parser.cc" +#line 3890 "seclang-parser.cc" break; case 228: -#line 2132 "seclang-parser.yy" +#line 2133 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3897 "seclang-parser.cc" +#line 3898 "seclang-parser.cc" break; case 229: -#line 2136 "seclang-parser.yy" +#line 2137 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Ip_NoDictElement()); } -#line 3905 "seclang-parser.cc" +#line 3906 "seclang-parser.cc" break; case 230: -#line 2140 "seclang-parser.yy" +#line 2141 "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 3913 "seclang-parser.cc" +#line 3914 "seclang-parser.cc" break; case 231: -#line 2144 "seclang-parser.yy" +#line 2145 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3921 "seclang-parser.cc" +#line 3922 "seclang-parser.cc" break; case 232: -#line 2148 "seclang-parser.yy" +#line 2149 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3929 "seclang-parser.cc" +#line 3930 "seclang-parser.cc" break; case 233: -#line 2152 "seclang-parser.yy" +#line 2153 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Global_NoDictElement()); } -#line 3937 "seclang-parser.cc" +#line 3938 "seclang-parser.cc" break; case 234: -#line 2156 "seclang-parser.yy" +#line 2157 "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 3945 "seclang-parser.cc" +#line 3946 "seclang-parser.cc" break; case 235: -#line 2160 "seclang-parser.yy" +#line 2161 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3953 "seclang-parser.cc" +#line 3954 "seclang-parser.cc" break; case 236: -#line 2164 "seclang-parser.yy" +#line 2165 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3961 "seclang-parser.cc" +#line 3962 "seclang-parser.cc" break; case 237: -#line 2168 "seclang-parser.yy" +#line 2169 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::User_NoDictElement()); } -#line 3969 "seclang-parser.cc" +#line 3970 "seclang-parser.cc" break; case 238: -#line 2172 "seclang-parser.yy" +#line 2173 "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 3977 "seclang-parser.cc" +#line 3978 "seclang-parser.cc" break; case 239: -#line 2176 "seclang-parser.yy" +#line 2177 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DictElement(yystack_[0].value.as < std::string > ())); } -#line 3985 "seclang-parser.cc" +#line 3986 "seclang-parser.cc" break; case 240: -#line 2180 "seclang-parser.yy" +#line 2181 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 3993 "seclang-parser.cc" +#line 3994 "seclang-parser.cc" break; case 241: -#line 2184 "seclang-parser.yy" +#line 2185 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Tx_NoDictElement()); } -#line 4001 "seclang-parser.cc" +#line 4002 "seclang-parser.cc" break; case 242: -#line 2188 "seclang-parser.yy" +#line 2189 "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 4009 "seclang-parser.cc" +#line 4010 "seclang-parser.cc" break; case 243: -#line 2192 "seclang-parser.yy" +#line 2193 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4017 "seclang-parser.cc" +#line 4018 "seclang-parser.cc" break; case 244: -#line 2196 "seclang-parser.yy" +#line 2197 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4025 "seclang-parser.cc" +#line 4026 "seclang-parser.cc" break; case 245: -#line 2200 "seclang-parser.yy" +#line 2201 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Session_NoDictElement()); } -#line 4033 "seclang-parser.cc" +#line 4034 "seclang-parser.cc" break; case 246: -#line 2204 "seclang-parser.yy" +#line 2205 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4041 "seclang-parser.cc" +#line 4042 "seclang-parser.cc" break; case 247: -#line 2208 "seclang-parser.yy" +#line 2209 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4049 "seclang-parser.cc" +#line 4050 "seclang-parser.cc" break; case 248: -#line 2212 "seclang-parser.yy" +#line 2213 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsNames_NoDictElement()); } -#line 4057 "seclang-parser.cc" +#line 4058 "seclang-parser.cc" break; case 249: -#line 2216 "seclang-parser.yy" +#line 2217 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4065 "seclang-parser.cc" +#line 4066 "seclang-parser.cc" break; case 250: -#line 2220 "seclang-parser.yy" +#line 2221 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4073 "seclang-parser.cc" +#line 4074 "seclang-parser.cc" break; case 251: -#line 2224 "seclang-parser.yy" +#line 2225 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsGetNames_NoDictElement()); } -#line 4081 "seclang-parser.cc" +#line 4082 "seclang-parser.cc" break; case 252: -#line 2229 "seclang-parser.yy" +#line 2230 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4089 "seclang-parser.cc" +#line 4090 "seclang-parser.cc" break; case 253: -#line 2233 "seclang-parser.yy" +#line 2234 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4097 "seclang-parser.cc" +#line 4098 "seclang-parser.cc" break; case 254: -#line 2237 "seclang-parser.yy" +#line 2238 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsPostNames_NoDictElement()); } -#line 4105 "seclang-parser.cc" +#line 4106 "seclang-parser.cc" break; case 255: -#line 2242 "seclang-parser.yy" +#line 2243 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4113 "seclang-parser.cc" +#line 4114 "seclang-parser.cc" break; case 256: -#line 2246 "seclang-parser.yy" +#line 2247 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4121 "seclang-parser.cc" +#line 4122 "seclang-parser.cc" break; case 257: -#line 2250 "seclang-parser.yy" +#line 2251 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestHeadersNames_NoDictElement()); } -#line 4129 "seclang-parser.cc" +#line 4130 "seclang-parser.cc" break; case 258: -#line 2255 "seclang-parser.yy" +#line 2256 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseContentType()); } -#line 4137 "seclang-parser.cc" +#line 4138 "seclang-parser.cc" break; case 259: -#line 2260 "seclang-parser.yy" +#line 2261 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_DictElement(yystack_[0].value.as < std::string > ())); } -#line 4145 "seclang-parser.cc" +#line 4146 "seclang-parser.cc" break; case 260: -#line 2264 "seclang-parser.yy" +#line 2265 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as < std::string > ())); } -#line 4153 "seclang-parser.cc" +#line 4154 "seclang-parser.cc" break; case 261: -#line 2268 "seclang-parser.yy" +#line 2269 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseHeadersNames_NoDictElement()); } -#line 4161 "seclang-parser.cc" +#line 4162 "seclang-parser.cc" break; case 262: -#line 2272 "seclang-parser.yy" +#line 2273 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ArgsCombinedSize()); } -#line 4169 "seclang-parser.cc" +#line 4170 "seclang-parser.cc" break; case 263: -#line 2276 "seclang-parser.yy" +#line 2277 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::AuthType()); } -#line 4177 "seclang-parser.cc" +#line 4178 "seclang-parser.cc" break; case 264: -#line 2280 "seclang-parser.yy" +#line 2281 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FilesCombinedSize()); } -#line 4185 "seclang-parser.cc" +#line 4186 "seclang-parser.cc" break; case 265: -#line 2284 "seclang-parser.yy" +#line 2285 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FullRequest()); } -#line 4193 "seclang-parser.cc" +#line 4194 "seclang-parser.cc" break; case 266: -#line 2288 "seclang-parser.yy" +#line 2289 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::FullRequestLength()); } -#line 4201 "seclang-parser.cc" +#line 4202 "seclang-parser.cc" break; case 267: -#line 2292 "seclang-parser.yy" +#line 2293 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::InboundDataError()); } -#line 4209 "seclang-parser.cc" +#line 4210 "seclang-parser.cc" break; case 268: -#line 2296 "seclang-parser.yy" +#line 2297 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVar()); } -#line 4217 "seclang-parser.cc" +#line 4218 "seclang-parser.cc" break; case 269: -#line 2300 "seclang-parser.yy" +#line 2301 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MatchedVarName()); } -#line 4225 "seclang-parser.cc" +#line 4226 "seclang-parser.cc" break; case 270: -#line 2304 "seclang-parser.yy" +#line 2305 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartBoundaryQuoted()); } -#line 4233 "seclang-parser.cc" +#line 4234 "seclang-parser.cc" break; case 271: -#line 2308 "seclang-parser.yy" +#line 2309 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartBoundaryWhiteSpace()); } -#line 4241 "seclang-parser.cc" +#line 4242 "seclang-parser.cc" break; case 272: -#line 2312 "seclang-parser.yy" +#line 2313 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartCrlfLFLines()); } -#line 4249 "seclang-parser.cc" +#line 4250 "seclang-parser.cc" break; case 273: -#line 2316 "seclang-parser.yy" +#line 2317 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartDateAfter()); } -#line 4257 "seclang-parser.cc" +#line 4258 "seclang-parser.cc" break; case 274: -#line 2320 "seclang-parser.yy" +#line 2321 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartDateBefore()); } -#line 4265 "seclang-parser.cc" +#line 4266 "seclang-parser.cc" break; case 275: -#line 2324 "seclang-parser.yy" +#line 2325 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartFileLimitExceeded()); } -#line 4273 "seclang-parser.cc" +#line 4274 "seclang-parser.cc" break; case 276: -#line 2328 "seclang-parser.yy" +#line 2329 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartHeaderFolding()); } -#line 4281 "seclang-parser.cc" +#line 4282 "seclang-parser.cc" break; case 277: -#line 2332 "seclang-parser.yy" +#line 2333 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidHeaderFolding()); } -#line 4289 "seclang-parser.cc" +#line 4290 "seclang-parser.cc" break; case 278: -#line 2336 "seclang-parser.yy" +#line 2337 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidPart()); } -#line 4297 "seclang-parser.cc" +#line 4298 "seclang-parser.cc" break; case 279: -#line 2340 "seclang-parser.yy" +#line 2341 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartInvalidQuoting()); } -#line 4305 "seclang-parser.cc" +#line 4306 "seclang-parser.cc" break; case 280: -#line 2344 "seclang-parser.yy" +#line 2345 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartLFLine()); } -#line 4313 "seclang-parser.cc" +#line 4314 "seclang-parser.cc" break; case 281: -#line 2348 "seclang-parser.yy" +#line 2349 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartMissingSemicolon()); } -#line 4321 "seclang-parser.cc" +#line 4322 "seclang-parser.cc" break; case 282: -#line 2352 "seclang-parser.yy" +#line 2353 "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: -#line 2356 "seclang-parser.yy" +#line 2357 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartStrictError()); } -#line 4337 "seclang-parser.cc" +#line 4338 "seclang-parser.cc" break; case 284: -#line 2360 "seclang-parser.yy" +#line 2361 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::MultipartUnmatchedBoundary()); } -#line 4345 "seclang-parser.cc" +#line 4346 "seclang-parser.cc" break; case 285: -#line 2364 "seclang-parser.yy" +#line 2365 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::OutboundDataError()); } -#line 4353 "seclang-parser.cc" +#line 4354 "seclang-parser.cc" break; case 286: -#line 2368 "seclang-parser.yy" +#line 2369 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::PathInfo()); } -#line 4361 "seclang-parser.cc" +#line 4362 "seclang-parser.cc" break; case 287: -#line 2372 "seclang-parser.yy" +#line 2373 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::QueryString()); } -#line 4369 "seclang-parser.cc" +#line 4370 "seclang-parser.cc" break; case 288: -#line 2376 "seclang-parser.yy" +#line 2377 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemoteAddr()); } -#line 4377 "seclang-parser.cc" +#line 4378 "seclang-parser.cc" break; case 289: -#line 2380 "seclang-parser.yy" +#line 2381 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemoteHost()); } -#line 4385 "seclang-parser.cc" +#line 4386 "seclang-parser.cc" break; case 290: -#line 2384 "seclang-parser.yy" +#line 2385 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RemotePort()); } -#line 4393 "seclang-parser.cc" +#line 4394 "seclang-parser.cc" break; case 291: -#line 2388 "seclang-parser.yy" +#line 2389 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyError()); } -#line 4401 "seclang-parser.cc" +#line 4402 "seclang-parser.cc" break; case 292: -#line 2392 "seclang-parser.yy" +#line 2393 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyErrorMsg()); } -#line 4409 "seclang-parser.cc" +#line 4410 "seclang-parser.cc" break; case 293: -#line 2396 "seclang-parser.yy" +#line 2397 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessor()); } -#line 4417 "seclang-parser.cc" +#line 4418 "seclang-parser.cc" break; case 294: -#line 2400 "seclang-parser.yy" +#line 2401 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessorError()); } -#line 4425 "seclang-parser.cc" +#line 4426 "seclang-parser.cc" break; case 295: -#line 2404 "seclang-parser.yy" +#line 2405 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ReqbodyProcessorErrorMsg()); } -#line 4433 "seclang-parser.cc" +#line 4434 "seclang-parser.cc" break; case 296: -#line 2408 "seclang-parser.yy" +#line 2409 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBasename()); } -#line 4441 "seclang-parser.cc" +#line 4442 "seclang-parser.cc" break; case 297: -#line 2412 "seclang-parser.yy" +#line 2413 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBody()); } -#line 4449 "seclang-parser.cc" +#line 4450 "seclang-parser.cc" break; case 298: -#line 2416 "seclang-parser.yy" +#line 2417 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestBodyLength()); } -#line 4457 "seclang-parser.cc" +#line 4458 "seclang-parser.cc" break; case 299: -#line 2420 "seclang-parser.yy" +#line 2421 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestFilename()); } -#line 4465 "seclang-parser.cc" +#line 4466 "seclang-parser.cc" break; case 300: -#line 2424 "seclang-parser.yy" +#line 2425 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestLine()); } -#line 4473 "seclang-parser.cc" +#line 4474 "seclang-parser.cc" break; case 301: -#line 2428 "seclang-parser.yy" +#line 2429 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestMethod()); } -#line 4481 "seclang-parser.cc" +#line 4482 "seclang-parser.cc" break; case 302: -#line 2432 "seclang-parser.yy" +#line 2433 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestProtocol()); } -#line 4489 "seclang-parser.cc" +#line 4490 "seclang-parser.cc" break; case 303: -#line 2436 "seclang-parser.yy" +#line 2437 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestURI()); } -#line 4497 "seclang-parser.cc" +#line 4498 "seclang-parser.cc" break; case 304: -#line 2440 "seclang-parser.yy" +#line 2441 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::RequestURIRaw()); } -#line 4505 "seclang-parser.cc" +#line 4506 "seclang-parser.cc" break; case 305: -#line 2444 "seclang-parser.yy" +#line 2445 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseBody()); } -#line 4513 "seclang-parser.cc" +#line 4514 "seclang-parser.cc" break; case 306: -#line 2448 "seclang-parser.yy" +#line 2449 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseContentLength()); } -#line 4521 "seclang-parser.cc" +#line 4522 "seclang-parser.cc" break; case 307: -#line 2452 "seclang-parser.yy" +#line 2453 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseProtocol()); } -#line 4529 "seclang-parser.cc" +#line 4530 "seclang-parser.cc" break; case 308: -#line 2456 "seclang-parser.yy" +#line 2457 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ResponseStatus()); } -#line 4537 "seclang-parser.cc" +#line 4538 "seclang-parser.cc" break; case 309: -#line 2460 "seclang-parser.yy" +#line 2461 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerAddr()); } -#line 4545 "seclang-parser.cc" +#line 4546 "seclang-parser.cc" break; case 310: -#line 2464 "seclang-parser.yy" +#line 2465 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerName()); } -#line 4553 "seclang-parser.cc" +#line 4554 "seclang-parser.cc" break; case 311: -#line 2468 "seclang-parser.yy" +#line 2469 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::ServerPort()); } -#line 4561 "seclang-parser.cc" +#line 4562 "seclang-parser.cc" break; case 312: -#line 2472 "seclang-parser.yy" +#line 2473 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::SessionID()); } -#line 4569 "seclang-parser.cc" +#line 4570 "seclang-parser.cc" break; case 313: -#line 2476 "seclang-parser.yy" +#line 2477 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UniqueID()); } -#line 4577 "seclang-parser.cc" +#line 4578 "seclang-parser.cc" break; case 314: -#line 2480 "seclang-parser.yy" +#line 2481 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UrlEncodedError()); } -#line 4585 "seclang-parser.cc" +#line 4586 "seclang-parser.cc" break; case 315: -#line 2484 "seclang-parser.yy" +#line 2485 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::UserID()); } -#line 4593 "seclang-parser.cc" +#line 4594 "seclang-parser.cc" break; case 316: -#line 2488 "seclang-parser.yy" +#line 2489 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::Status()); } -#line 4601 "seclang-parser.cc" +#line 4602 "seclang-parser.cc" break; case 317: -#line 2492 "seclang-parser.yy" +#line 2493 "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: -#line 2496 "seclang-parser.yy" +#line 2497 "seclang-parser.yy" { VARIABLE_CONTAINER(yylhs.value.as < std::unique_ptr > (), new variables::WebAppId()); } -#line 4617 "seclang-parser.cc" +#line 4618 "seclang-parser.cc" break; case 319: -#line 2500 "seclang-parser.yy" +#line 2501 "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 4628 "seclang-parser.cc" +#line 4629 "seclang-parser.cc" break; case 320: -#line 2508 "seclang-parser.yy" +#line 2509 "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 4639 "seclang-parser.cc" +#line 4640 "seclang-parser.cc" break; case 321: -#line 2515 "seclang-parser.yy" +#line 2516 "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 4650 "seclang-parser.cc" +#line 4651 "seclang-parser.cc" break; case 322: -#line 2522 "seclang-parser.yy" +#line 2523 "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 4661 "seclang-parser.cc" +#line 4662 "seclang-parser.cc" break; case 323: -#line 2529 "seclang-parser.yy" +#line 2530 "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 4672 "seclang-parser.cc" +#line 4673 "seclang-parser.cc" break; case 324: -#line 2536 "seclang-parser.yy" +#line 2537 "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 4683 "seclang-parser.cc" +#line 4684 "seclang-parser.cc" break; case 325: -#line 2543 "seclang-parser.yy" +#line 2544 "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 4694 "seclang-parser.cc" +#line 4695 "seclang-parser.cc" break; case 326: -#line 2550 "seclang-parser.yy" +#line 2551 "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 4705 "seclang-parser.cc" +#line 4706 "seclang-parser.cc" break; case 327: -#line 2557 "seclang-parser.yy" +#line 2558 "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 4716 "seclang-parser.cc" +#line 4717 "seclang-parser.cc" break; case 328: -#line 2564 "seclang-parser.yy" +#line 2565 "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 4727 "seclang-parser.cc" +#line 4728 "seclang-parser.cc" break; case 329: -#line 2571 "seclang-parser.yy" +#line 2572 "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 4738 "seclang-parser.cc" +#line 4739 "seclang-parser.cc" break; case 330: -#line 2578 "seclang-parser.yy" +#line 2579 "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 4749 "seclang-parser.cc" +#line 4750 "seclang-parser.cc" break; case 331: -#line 2585 "seclang-parser.yy" +#line 2586 "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 4760 "seclang-parser.cc" +#line 4761 "seclang-parser.cc" break; case 332: -#line 2595 "seclang-parser.yy" +#line 2596 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as < std::string > ())); } -#line 4768 "seclang-parser.cc" +#line 4769 "seclang-parser.cc" break; case 333: -#line 2599 "seclang-parser.yy" +#line 2600 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as < std::string > ())); } -#line 4776 "seclang-parser.cc" +#line 4777 "seclang-parser.cc" break; case 334: -#line 2603 "seclang-parser.yy" +#line 2604 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Append", yystack_[1].location); } -#line 4784 "seclang-parser.cc" +#line 4785 "seclang-parser.cc" break; case 335: -#line 2607 "seclang-parser.yy" +#line 2608 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::AuditLog()); } -#line 4792 "seclang-parser.cc" +#line 4793 "seclang-parser.cc" break; case 336: -#line 2611 "seclang-parser.yy" +#line 2612 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Block()); } -#line 4800 "seclang-parser.cc" +#line 4801 "seclang-parser.cc" break; case 337: -#line 2615 "seclang-parser.yy" +#line 2616 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Capture()); } -#line 4808 "seclang-parser.cc" +#line 4809 "seclang-parser.cc" break; case 338: -#line 2619 "seclang-parser.yy" +#line 2620 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Chain()); } -#line 4816 "seclang-parser.cc" +#line 4817 "seclang-parser.cc" break; case 339: -#line 2623 "seclang-parser.yy" +#line 2624 "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 4825 "seclang-parser.cc" +#line 4826 "seclang-parser.cc" break; case 340: -#line 2628 "seclang-parser.yy" +#line 2629 "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 4834 "seclang-parser.cc" +#line 4835 "seclang-parser.cc" break; case 341: -#line 2633 "seclang-parser.yy" +#line 2634 "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 4843 "seclang-parser.cc" +#line 4844 "seclang-parser.cc" break; case 342: -#line 2638 "seclang-parser.yy" +#line 2639 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as < std::string > ())); } -#line 4851 "seclang-parser.cc" +#line 4852 "seclang-parser.cc" break; case 343: -#line 2642 "seclang-parser.yy" +#line 2643 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as < std::string > ())); } -#line 4859 "seclang-parser.cc" +#line 4860 "seclang-parser.cc" break; case 344: -#line 2646 "seclang-parser.yy" +#line 2647 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as < std::string > ())); } -#line 4867 "seclang-parser.cc" +#line 4868 "seclang-parser.cc" break; case 345: -#line 2650 "seclang-parser.yy" +#line 2651 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as < std::string > ())); } -#line 4875 "seclang-parser.cc" +#line 4876 "seclang-parser.cc" break; case 346: -#line 2654 "seclang-parser.yy" +#line 2655 "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 4884 "seclang-parser.cc" +#line 4885 "seclang-parser.cc" break; case 347: -#line 2659 "seclang-parser.yy" +#line 2660 "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 4893 "seclang-parser.cc" +#line 4894 "seclang-parser.cc" break; case 348: -#line 2664 "seclang-parser.yy" +#line 2665 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "true")); } -#line 4901 "seclang-parser.cc" +#line 4902 "seclang-parser.cc" break; case 349: -#line 2668 "seclang-parser.yy" +#line 2669 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as < std::string > () + "false")); } -#line 4909 "seclang-parser.cc" +#line 4910 "seclang-parser.cc" break; case 350: -#line 2672 "seclang-parser.yy" +#line 2673 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); } -#line 4917 "seclang-parser.cc" +#line 4918 "seclang-parser.cc" break; case 351: -#line 2676 "seclang-parser.yy" +#line 2677 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=off")); } -#line 4925 "seclang-parser.cc" +#line 4926 "seclang-parser.cc" break; case 352: -#line 2680 "seclang-parser.yy" +#line 2681 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=detectiononly")); } -#line 4933 "seclang-parser.cc" +#line 4934 "seclang-parser.cc" break; case 353: -#line 2684 "seclang-parser.yy" +#line 2685 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as < std::string > ())); } -#line 4941 "seclang-parser.cc" +#line 4942 "seclang-parser.cc" break; case 354: -#line 2688 "seclang-parser.yy" +#line 2689 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveByTag(yystack_[0].value.as < std::string > ())); } -#line 4949 "seclang-parser.cc" +#line 4950 "seclang-parser.cc" break; case 355: -#line 2692 "seclang-parser.yy" +#line 2693 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as < std::string > ())); } -#line 4957 "seclang-parser.cc" +#line 4958 "seclang-parser.cc" break; case 356: -#line 2696 "seclang-parser.yy" +#line 2697 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as < std::string > ())); } -#line 4965 "seclang-parser.cc" +#line 4966 "seclang-parser.cc" break; case 357: -#line 2700 "seclang-parser.yy" +#line 2701 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Deny()); } -#line 4973 "seclang-parser.cc" +#line 4974 "seclang-parser.cc" break; case 358: -#line 2704 "seclang-parser.yy" +#line 2705 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); } -#line 4981 "seclang-parser.cc" +#line 4982 "seclang-parser.cc" break; case 359: -#line 2708 "seclang-parser.yy" +#line 2709 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Drop()); } -#line 4989 "seclang-parser.cc" +#line 4990 "seclang-parser.cc" break; case 360: -#line 2712 "seclang-parser.yy" +#line 2713 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Exec(yystack_[0].value.as < std::string > ())); } -#line 4997 "seclang-parser.cc" +#line 4998 "seclang-parser.cc" break; case 361: -#line 2716 "seclang-parser.yy" +#line 2717 "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 5006 "seclang-parser.cc" +#line 5007 "seclang-parser.cc" break; case 362: -#line 2721 "seclang-parser.yy" +#line 2722 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as < std::string > ())); } -#line 5014 "seclang-parser.cc" +#line 5015 "seclang-parser.cc" break; case 363: -#line 2725 "seclang-parser.yy" +#line 2726 "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 5022 "seclang-parser.cc" +#line 5023 "seclang-parser.cc" break; case 364: -#line 2729 "seclang-parser.yy" +#line 2730 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::LogData(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5030 "seclang-parser.cc" +#line 5031 "seclang-parser.cc" break; case 365: -#line 2733 "seclang-parser.yy" +#line 2734 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Log()); } -#line 5038 "seclang-parser.cc" +#line 5039 "seclang-parser.cc" break; case 366: -#line 2737 "seclang-parser.yy" +#line 2738 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as < std::string > ())); } -#line 5046 "seclang-parser.cc" +#line 5047 "seclang-parser.cc" break; case 367: -#line 2741 "seclang-parser.yy" +#line 2742 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Msg(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5054 "seclang-parser.cc" +#line 5055 "seclang-parser.cc" break; case 368: -#line 2745 "seclang-parser.yy" +#line 2746 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::MultiMatch()); } -#line 5062 "seclang-parser.cc" +#line 5063 "seclang-parser.cc" break; case 369: -#line 2749 "seclang-parser.yy" +#line 2750 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::NoAuditLog()); } -#line 5070 "seclang-parser.cc" +#line 5071 "seclang-parser.cc" break; case 370: -#line 2753 "seclang-parser.yy" +#line 2754 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::NoLog()); } -#line 5078 "seclang-parser.cc" +#line 5079 "seclang-parser.cc" break; case 371: -#line 2757 "seclang-parser.yy" +#line 2758 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::disruptive::Pass()); } -#line 5086 "seclang-parser.cc" +#line 5087 "seclang-parser.cc" break; case 372: -#line 2761 "seclang-parser.yy" +#line 2762 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); } -#line 5094 "seclang-parser.cc" +#line 5095 "seclang-parser.cc" break; case 373: -#line 2765 "seclang-parser.yy" +#line 2766 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Phase(yystack_[0].value.as < std::string > ())); } -#line 5102 "seclang-parser.cc" +#line 5103 "seclang-parser.cc" break; case 374: -#line 2769 "seclang-parser.yy" +#line 2770 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); } -#line 5110 "seclang-parser.cc" +#line 5111 "seclang-parser.cc" break; case 375: -#line 2773 "seclang-parser.yy" +#line 2774 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); } -#line 5118 "seclang-parser.cc" +#line 5119 "seclang-parser.cc" break; case 376: -#line 2777 "seclang-parser.yy" +#line 2778 "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 5126 "seclang-parser.cc" +#line 5127 "seclang-parser.cc" break; case 377: -#line 2781 "seclang-parser.yy" +#line 2782 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Rev(yystack_[0].value.as < std::string > ())); } -#line 5134 "seclang-parser.cc" +#line 5135 "seclang-parser.cc" break; case 378: -#line 2785 "seclang-parser.yy" +#line 2786 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseArg", yystack_[1].location); } -#line 5142 "seclang-parser.cc" +#line 5143 "seclang-parser.cc" break; case 379: -#line 2789 "seclang-parser.yy" +#line 2790 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseMatched", yystack_[1].location); } -#line 5150 "seclang-parser.cc" +#line 5151 "seclang-parser.cc" break; case 380: -#line 2793 "seclang-parser.yy" +#line 2794 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseMatchedBytes", yystack_[1].location); } -#line 5158 "seclang-parser.cc" +#line 5159 "seclang-parser.cc" break; case 381: -#line 2797 "seclang-parser.yy" +#line 2798 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseRequestHeader", yystack_[1].location); } -#line 5166 "seclang-parser.cc" +#line 5167 "seclang-parser.cc" break; case 382: -#line 2801 "seclang-parser.yy" +#line 2802 "seclang-parser.yy" { ACTION_NOT_SUPPORTED("SanitiseResponseHeader", yystack_[1].location); } -#line 5174 "seclang-parser.cc" +#line 5175 "seclang-parser.cc" break; case 383: -#line 2805 "seclang-parser.yy" +#line 2806 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetENV(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5182 "seclang-parser.cc" +#line 5183 "seclang-parser.cc" break; case 384: -#line 2809 "seclang-parser.yy" +#line 2810 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetRSC(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5190 "seclang-parser.cc" +#line 5191 "seclang-parser.cc" break; case 385: -#line 2813 "seclang-parser.yy" +#line 2814 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetSID(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5198 "seclang-parser.cc" +#line 5199 "seclang-parser.cc" break; case 386: -#line 2817 "seclang-parser.yy" +#line 2818 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SetUID(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5206 "seclang-parser.cc" +#line 5207 "seclang-parser.cc" break; case 387: -#line 2821 "seclang-parser.yy" +#line 2822 "seclang-parser.yy" { yylhs.value.as < std::unique_ptr > () = std::move(yystack_[0].value.as < std::unique_ptr > ()); } -#line 5214 "seclang-parser.cc" +#line 5215 "seclang-parser.cc" break; case 388: -#line 2825 "seclang-parser.yy" +#line 2826 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Severity(yystack_[0].value.as < std::string > ())); } -#line 5222 "seclang-parser.cc" +#line 5223 "seclang-parser.cc" break; case 389: -#line 2829 "seclang-parser.yy" +#line 2830 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Skip(yystack_[0].value.as < std::string > ())); } -#line 5230 "seclang-parser.cc" +#line 5231 "seclang-parser.cc" break; case 390: -#line 2833 "seclang-parser.yy" +#line 2834 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as < std::string > ())); } -#line 5238 "seclang-parser.cc" +#line 5239 "seclang-parser.cc" break; case 391: -#line 2837 "seclang-parser.yy" +#line 2838 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as < std::string > ())); } -#line 5246 "seclang-parser.cc" +#line 5247 "seclang-parser.cc" break; case 392: -#line 2841 "seclang-parser.yy" +#line 2842 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Tag(std::move(yystack_[0].value.as < std::unique_ptr > ()))); } -#line 5254 "seclang-parser.cc" +#line 5255 "seclang-parser.cc" break; case 393: -#line 2845 "seclang-parser.yy" +#line 2846 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::Ver(yystack_[0].value.as < std::string > ())); } -#line 5262 "seclang-parser.cc" +#line 5263 "seclang-parser.cc" break; case 394: -#line 2849 "seclang-parser.yy" +#line 2850 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as < std::string > ())); } -#line 5270 "seclang-parser.cc" +#line 5271 "seclang-parser.cc" break; case 395: -#line 2853 "seclang-parser.yy" +#line 2854 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityZero7bit()); } -#line 5278 "seclang-parser.cc" +#line 5279 "seclang-parser.cc" break; case 396: -#line 2857 "seclang-parser.yy" +#line 2858 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityOdd7bit()); } -#line 5286 "seclang-parser.cc" +#line 5287 "seclang-parser.cc" break; case 397: -#line 2861 "seclang-parser.yy" +#line 2862 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ParityEven7bit()); } -#line 5294 "seclang-parser.cc" +#line 5295 "seclang-parser.cc" break; case 398: -#line 2865 "seclang-parser.yy" +#line 2866 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::SqlHexDecode()); } -#line 5302 "seclang-parser.cc" +#line 5303 "seclang-parser.cc" break; case 399: -#line 2869 "seclang-parser.yy" +#line 2870 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64Encode()); } -#line 5310 "seclang-parser.cc" +#line 5311 "seclang-parser.cc" break; case 400: -#line 2873 "seclang-parser.yy" +#line 2874 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64Decode()); } -#line 5318 "seclang-parser.cc" +#line 5319 "seclang-parser.cc" break; case 401: -#line 2877 "seclang-parser.yy" +#line 2878 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Base64DecodeExt()); } -#line 5326 "seclang-parser.cc" +#line 5327 "seclang-parser.cc" break; case 402: -#line 2881 "seclang-parser.yy" +#line 2882 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CmdLine()); } -#line 5334 "seclang-parser.cc" +#line 5335 "seclang-parser.cc" break; case 403: -#line 2885 "seclang-parser.yy" +#line 2886 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Sha1()); } -#line 5342 "seclang-parser.cc" +#line 5343 "seclang-parser.cc" break; case 404: -#line 2889 "seclang-parser.yy" +#line 2890 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Md5()); } -#line 5350 "seclang-parser.cc" +#line 5351 "seclang-parser.cc" break; case 405: -#line 2893 "seclang-parser.yy" +#line 2894 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::EscapeSeqDecode()); } -#line 5358 "seclang-parser.cc" +#line 5359 "seclang-parser.cc" break; case 406: -#line 2897 "seclang-parser.yy" +#line 2898 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HexEncode()); } -#line 5366 "seclang-parser.cc" +#line 5367 "seclang-parser.cc" break; case 407: -#line 2901 "seclang-parser.yy" +#line 2902 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HexDecode()); } -#line 5374 "seclang-parser.cc" +#line 5375 "seclang-parser.cc" break; case 408: -#line 2905 "seclang-parser.yy" +#line 2906 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::LowerCase()); } -#line 5382 "seclang-parser.cc" +#line 5383 "seclang-parser.cc" break; case 409: -#line 2909 "seclang-parser.yy" +#line 2910 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UpperCase()); } -#line 5390 "seclang-parser.cc" +#line 5391 "seclang-parser.cc" break; case 410: -#line 2913 "seclang-parser.yy" +#line 2914 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlDecodeUni()); } -#line 5398 "seclang-parser.cc" +#line 5399 "seclang-parser.cc" break; case 411: -#line 2917 "seclang-parser.yy" +#line 2918 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlDecode()); } -#line 5406 "seclang-parser.cc" +#line 5407 "seclang-parser.cc" break; case 412: -#line 2921 "seclang-parser.yy" +#line 2922 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::UrlEncode()); } -#line 5414 "seclang-parser.cc" +#line 5415 "seclang-parser.cc" break; case 413: -#line 2925 "seclang-parser.yy" +#line 2926 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::None()); } -#line 5422 "seclang-parser.cc" +#line 5423 "seclang-parser.cc" break; case 414: -#line 2929 "seclang-parser.yy" +#line 2930 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CompressWhitespace()); } -#line 5430 "seclang-parser.cc" +#line 5431 "seclang-parser.cc" break; case 415: -#line 2933 "seclang-parser.yy" +#line 2934 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveWhitespace()); } -#line 5438 "seclang-parser.cc" +#line 5439 "seclang-parser.cc" break; case 416: -#line 2937 "seclang-parser.yy" +#line 2938 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ReplaceNulls()); } -#line 5446 "seclang-parser.cc" +#line 5447 "seclang-parser.cc" break; case 417: -#line 2941 "seclang-parser.yy" +#line 2942 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveNulls()); } -#line 5454 "seclang-parser.cc" +#line 5455 "seclang-parser.cc" break; case 418: -#line 2945 "seclang-parser.yy" +#line 2946 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::HtmlEntityDecode()); } -#line 5462 "seclang-parser.cc" +#line 5463 "seclang-parser.cc" break; case 419: -#line 2949 "seclang-parser.yy" +#line 2950 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::JsDecode()); } -#line 5470 "seclang-parser.cc" +#line 5471 "seclang-parser.cc" break; case 420: -#line 2953 "seclang-parser.yy" +#line 2954 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::CssDecode()); } -#line 5478 "seclang-parser.cc" +#line 5479 "seclang-parser.cc" break; case 421: -#line 2957 "seclang-parser.yy" +#line 2958 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Trim()); } -#line 5486 "seclang-parser.cc" +#line 5487 "seclang-parser.cc" break; case 422: -#line 2961 "seclang-parser.yy" +#line 2962 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::TrimLeft()); } -#line 5494 "seclang-parser.cc" +#line 5495 "seclang-parser.cc" break; case 423: -#line 2965 "seclang-parser.yy" +#line 2966 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::TrimRight()); } -#line 5502 "seclang-parser.cc" +#line 5503 "seclang-parser.cc" break; case 424: -#line 2969 "seclang-parser.yy" +#line 2970 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::NormalisePathWin()); } -#line 5510 "seclang-parser.cc" +#line 5511 "seclang-parser.cc" break; case 425: -#line 2973 "seclang-parser.yy" +#line 2974 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::NormalisePath()); } -#line 5518 "seclang-parser.cc" +#line 5519 "seclang-parser.cc" break; case 426: -#line 2977 "seclang-parser.yy" +#line 2978 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Length()); } -#line 5526 "seclang-parser.cc" +#line 5527 "seclang-parser.cc" break; case 427: -#line 2981 "seclang-parser.yy" +#line 2982 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::Utf8ToUnicode()); } -#line 5534 "seclang-parser.cc" +#line 5535 "seclang-parser.cc" break; case 428: -#line 2985 "seclang-parser.yy" +#line 2986 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveCommentsChar()); } -#line 5542 "seclang-parser.cc" +#line 5543 "seclang-parser.cc" break; case 429: -#line 2989 "seclang-parser.yy" +#line 2990 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::RemoveComments()); } -#line 5550 "seclang-parser.cc" +#line 5551 "seclang-parser.cc" break; case 430: -#line 2993 "seclang-parser.yy" +#line 2994 "seclang-parser.yy" { ACTION_CONTAINER(yylhs.value.as < std::unique_ptr > (), new actions::transformations::ReplaceComments()); } -#line 5558 "seclang-parser.cc" +#line 5559 "seclang-parser.cc" break; case 431: -#line 3000 "seclang-parser.yy" +#line 3001 "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 5566 "seclang-parser.cc" +#line 5567 "seclang-parser.cc" break; case 432: -#line 3004 "seclang-parser.yy" +#line 3005 "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 5574 "seclang-parser.cc" +#line 5575 "seclang-parser.cc" break; case 433: -#line 3008 "seclang-parser.yy" +#line 3009 "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 5582 "seclang-parser.cc" +#line 5583 "seclang-parser.cc" break; case 434: -#line 3012 "seclang-parser.yy" +#line 3013 "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 5590 "seclang-parser.cc" +#line 5591 "seclang-parser.cc" break; case 435: -#line 3016 "seclang-parser.yy" +#line 3017 "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 5598 "seclang-parser.cc" +#line 5599 "seclang-parser.cc" break; case 436: -#line 3023 "seclang-parser.yy" +#line 3024 "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 5607 "seclang-parser.cc" +#line 5608 "seclang-parser.cc" break; case 437: -#line 3028 "seclang-parser.yy" +#line 3029 "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 5616 "seclang-parser.cc" +#line 5617 "seclang-parser.cc" break; case 438: -#line 3033 "seclang-parser.yy" +#line 3034 "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 5626 "seclang-parser.cc" +#line 5627 "seclang-parser.cc" break; case 439: -#line 3039 "seclang-parser.yy" +#line 3040 "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 5636 "seclang-parser.cc" +#line 5637 "seclang-parser.cc" break; -#line 5640 "seclang-parser.cc" +#line 5641 "seclang-parser.cc" default: break; @@ -7133,43 +7134,43 @@ namespace yy { 923, 927, 931, 935, 939, 943, 947, 952, 956, 960, 964, 968, 972, 977, 982, 986, 990, 994, 998, 1002, 1006, 1010, 1014, 1018, 1022, 1026, 1030, 1034, 1038, 1042, - 1046, 1050, 1054, 1068, 1069, 1101, 1120, 1141, 1171, 1228, - 1235, 1239, 1243, 1247, 1251, 1255, 1259, 1263, 1272, 1276, - 1281, 1284, 1289, 1294, 1299, 1304, 1307, 1312, 1315, 1320, - 1325, 1328, 1333, 1338, 1343, 1348, 1353, 1358, 1363, 1366, - 1371, 1376, 1381, 1386, 1389, 1394, 1399, 1404, 1417, 1430, - 1443, 1456, 1469, 1495, 1523, 1535, 1555, 1582, 1588, 1593, - 1598, 1607, 1612, 1616, 1620, 1624, 1628, 1632, 1636, 1641, - 1646, 1658, 1664, 1668, 1672, 1683, 1692, 1693, 1700, 1705, - 1710, 1764, 1771, 1779, 1816, 1820, 1827, 1832, 1838, 1844, - 1850, 1857, 1867, 1871, 1875, 1879, 1883, 1887, 1891, 1895, - 1899, 1903, 1907, 1911, 1915, 1919, 1923, 1927, 1931, 1935, - 1939, 1943, 1947, 1951, 1955, 1959, 1963, 1967, 1971, 1975, - 1979, 1983, 1987, 1991, 1995, 1999, 2003, 2007, 2011, 2015, - 2019, 2023, 2027, 2031, 2035, 2039, 2043, 2047, 2051, 2055, - 2059, 2063, 2067, 2071, 2075, 2079, 2083, 2087, 2091, 2095, - 2099, 2103, 2107, 2111, 2115, 2119, 2123, 2127, 2131, 2135, - 2139, 2143, 2147, 2151, 2155, 2159, 2163, 2167, 2171, 2175, - 2179, 2183, 2187, 2191, 2195, 2199, 2203, 2207, 2211, 2215, - 2219, 2223, 2228, 2232, 2236, 2241, 2245, 2249, 2254, 2259, - 2263, 2267, 2271, 2275, 2279, 2283, 2287, 2291, 2295, 2299, - 2303, 2307, 2311, 2315, 2319, 2323, 2327, 2331, 2335, 2339, - 2343, 2347, 2351, 2355, 2359, 2363, 2367, 2371, 2375, 2379, - 2383, 2387, 2391, 2395, 2399, 2403, 2407, 2411, 2415, 2419, - 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, 2459, - 2463, 2467, 2471, 2475, 2479, 2483, 2487, 2491, 2495, 2499, - 2507, 2514, 2521, 2528, 2535, 2542, 2549, 2556, 2563, 2570, - 2577, 2584, 2594, 2598, 2602, 2606, 2610, 2614, 2618, 2622, - 2627, 2632, 2637, 2641, 2645, 2649, 2653, 2658, 2663, 2667, - 2671, 2675, 2679, 2683, 2687, 2691, 2695, 2699, 2703, 2707, - 2711, 2715, 2720, 2724, 2728, 2732, 2736, 2740, 2744, 2748, - 2752, 2756, 2760, 2764, 2768, 2772, 2776, 2780, 2784, 2788, - 2792, 2796, 2800, 2804, 2808, 2812, 2816, 2820, 2824, 2828, - 2832, 2836, 2840, 2844, 2848, 2852, 2856, 2860, 2864, 2868, - 2872, 2876, 2880, 2884, 2888, 2892, 2896, 2900, 2904, 2908, - 2912, 2916, 2920, 2924, 2928, 2932, 2936, 2940, 2944, 2948, - 2952, 2956, 2960, 2964, 2968, 2972, 2976, 2980, 2984, 2988, - 2992, 2999, 3003, 3007, 3011, 3015, 3022, 3027, 3032, 3038 + 1046, 1050, 1054, 1068, 1069, 1101, 1120, 1141, 1171, 1229, + 1236, 1240, 1244, 1248, 1252, 1256, 1260, 1264, 1273, 1277, + 1282, 1285, 1290, 1295, 1300, 1305, 1308, 1313, 1316, 1321, + 1326, 1329, 1334, 1339, 1344, 1349, 1354, 1359, 1364, 1367, + 1372, 1377, 1382, 1387, 1390, 1395, 1400, 1405, 1418, 1431, + 1444, 1457, 1470, 1496, 1524, 1536, 1556, 1583, 1589, 1594, + 1599, 1608, 1613, 1617, 1621, 1625, 1629, 1633, 1637, 1642, + 1647, 1659, 1665, 1669, 1673, 1684, 1693, 1694, 1701, 1706, + 1711, 1765, 1772, 1780, 1817, 1821, 1828, 1833, 1839, 1845, + 1851, 1858, 1868, 1872, 1876, 1880, 1884, 1888, 1892, 1896, + 1900, 1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, + 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, + 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, + 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, + 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096, + 2100, 2104, 2108, 2112, 2116, 2120, 2124, 2128, 2132, 2136, + 2140, 2144, 2148, 2152, 2156, 2160, 2164, 2168, 2172, 2176, + 2180, 2184, 2188, 2192, 2196, 2200, 2204, 2208, 2212, 2216, + 2220, 2224, 2229, 2233, 2237, 2242, 2246, 2250, 2255, 2260, + 2264, 2268, 2272, 2276, 2280, 2284, 2288, 2292, 2296, 2300, + 2304, 2308, 2312, 2316, 2320, 2324, 2328, 2332, 2336, 2340, + 2344, 2348, 2352, 2356, 2360, 2364, 2368, 2372, 2376, 2380, + 2384, 2388, 2392, 2396, 2400, 2404, 2408, 2412, 2416, 2420, + 2424, 2428, 2432, 2436, 2440, 2444, 2448, 2452, 2456, 2460, + 2464, 2468, 2472, 2476, 2480, 2484, 2488, 2492, 2496, 2500, + 2508, 2515, 2522, 2529, 2536, 2543, 2550, 2557, 2564, 2571, + 2578, 2585, 2595, 2599, 2603, 2607, 2611, 2615, 2619, 2623, + 2628, 2633, 2638, 2642, 2646, 2650, 2654, 2659, 2664, 2668, + 2672, 2676, 2680, 2684, 2688, 2692, 2696, 2700, 2704, 2708, + 2712, 2716, 2721, 2725, 2729, 2733, 2737, 2741, 2745, 2749, + 2753, 2757, 2761, 2765, 2769, 2773, 2777, 2781, 2785, 2789, + 2793, 2797, 2801, 2805, 2809, 2813, 2817, 2821, 2825, 2829, + 2833, 2837, 2841, 2845, 2849, 2853, 2857, 2861, 2865, 2869, + 2873, 2877, 2881, 2885, 2889, 2893, 2897, 2901, 2905, 2909, + 2913, 2917, 2921, 2925, 2929, 2933, 2937, 2941, 2945, 2949, + 2953, 2957, 2961, 2965, 2969, 2973, 2977, 2981, 2985, 2989, + 2993, 3000, 3004, 3008, 3012, 3016, 3023, 3028, 3033, 3039 }; void @@ -7201,9 +7202,9 @@ namespace yy { } // yy -#line 7205 "seclang-parser.cc" +#line 7206 "seclang-parser.cc" -#line 3045 "seclang-parser.yy" +#line 3046 "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 acd4f3c7..e60af7af 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -1180,7 +1180,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 807be897..b1ccac8c 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)); @@ -241,16 +242,16 @@ void RuleWithActions::executeActionsAfterFullMatch(Transaction *trans) { continue; } actions::Action *a = dynamic_cast(b.second.get()); - if (a->isDisruptive()) { + if (dynamic_cast(a) != NULL) { trans->messageGetLast()->setRule(this); } executeAction(trans, a, false); - if (a->isDisruptive()) { + if (dynamic_cast(a) != NULL) { disruptiveAlreadyExecuted = true; } } for (auto &a : getMatchActionsPtr()) { - if (!a->isDisruptive() + if (!dynamic_cast(a) != NULL && !(disruptiveAlreadyExecuted && dynamic_cast(a))) { executeAction(trans, a, false); @@ -270,7 +271,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;