diff --git a/headers/modsecurity/rule.h b/headers/modsecurity/rule.h index 665afb86..7e5f9764 100644 --- a/headers/modsecurity/rule.h +++ b/headers/modsecurity/rule.h @@ -74,11 +74,12 @@ class Rule { void cleanMatchedVars(Transaction *trasn); void updateRulesVariable(Transaction *trasn); - std::vector getActionNames(); - std::vector getActionsByName(const std::string& name); + //std::vector getActionNames(); + std::vector getActionsByName(const std::string& name, + Transaction *t); bool containsTag(const std::string& name, Transaction *t); bool containsMsg(const std::string& name, Transaction *t); - bool containsDisruptiveAction(); + bool containsStaticDisruptiveAction(); int refCountDecreaseAndCheck() { m_referenceCount--; diff --git a/headers/modsecurity/rules_exceptions.h b/headers/modsecurity/rules_exceptions.h index 3b928da2..b676e5f7 100644 --- a/headers/modsecurity/rules_exceptions.h +++ b/headers/modsecurity/rules_exceptions.h @@ -35,6 +35,9 @@ namespace modsecurity { +namespace actions { +class Action; +} namespace Variables { class Variable; } @@ -65,12 +68,20 @@ class RulesExceptions { std::unique_ptr > > v, std::string *error); + bool loadUpdateActionById(double id, + std::unique_ptr > > actions, + std::string *error); + std::unordered_multimap, - std::unique_ptr> m_variable_update_target_by_tag; + std::unique_ptr> m_variable_update_target_by_tag; std::unordered_multimap, - std::unique_ptr> m_variable_update_target_by_msg; + std::unique_ptr> m_variable_update_target_by_msg; std::unordered_multimap> m_variable_update_target_by_id; + std::unique_ptr> m_variable_update_target_by_id; + std::unordered_multimap> m_action_pre_update_target_by_id; + std::unordered_multimap> m_action_pos_update_target_by_id; std::list m_remove_rule_by_msg; std::list m_remove_rule_by_tag; diff --git a/src/operators/detect_sqli.cc b/src/operators/detect_sqli.cc index acf87cbd..aa8782a8 100644 --- a/src/operators/detect_sqli.cc +++ b/src/operators/detect_sqli.cc @@ -41,7 +41,7 @@ bool DetectSQLi::evaluate(Transaction *t, Rule *rule, input + "'"); #endif if (rule && t - && rule->getActionsByName("capture").size() > 0) { + && rule->getActionsByName("capture", t).size() > 0) { t->m_collections.m_tx_collection->storeOrUpdateFirst( "0", std::string(fingerprint)); #ifndef NO_LOGS diff --git a/src/operators/detect_xss.cc b/src/operators/detect_xss.cc index 6d867fc1..ed0f754b 100644 --- a/src/operators/detect_xss.cc +++ b/src/operators/detect_xss.cc @@ -37,7 +37,7 @@ bool DetectXSS::evaluate(Transaction *t, Rule *rule, t->debug(5, "detected XSS using libinjection."); #endif if (rule && t - && rule->getActionsByName("capture").size() > 0) { + && rule->getActionsByName("capture", t).size() > 0) { t->m_collections.m_tx_collection->storeOrUpdateFirst( "0", std::string(input)); #ifndef NO_LOGS diff --git a/src/operators/pm.cc b/src/operators/pm.cc index b3b70d0c..b2cd7410 100644 --- a/src/operators/pm.cc +++ b/src/operators/pm.cc @@ -96,7 +96,8 @@ bool Pm::evaluate(Transaction *transaction, Rule *rule, #ifdef MODSEC_MUTEX_ON_PM pthread_mutex_unlock(&m_lock); #endif - bool capture = rule && rule->getActionsByName("capture").size() > 0; + bool capture = rule && rule->getActionsByName("capture", + transaction).size() > 0; if (rc > 0 && transaction) { std::string match_(match); diff --git a/src/operators/rbl.cc b/src/operators/rbl.cc index d5eb1da4..ce071935 100644 --- a/src/operators/rbl.cc +++ b/src/operators/rbl.cc @@ -223,7 +223,7 @@ bool Rbl::evaluate(Transaction *t, Rule *rule, freeaddrinfo(info); if (rule && t - && rule->getActionsByName("capture").size() > 0) { + && rule->getActionsByName("capture", t).size() > 0) { t->m_collections.m_tx_collection->storeOrUpdateFirst( "0", std::string(ipStr)); #ifndef NO_LOGS diff --git a/src/operators/rx.cc b/src/operators/rx.cc index 4eb41b52..df6d6d43 100644 --- a/src/operators/rx.cc +++ b/src/operators/rx.cc @@ -54,7 +54,8 @@ bool Rx::evaluate(Transaction *transaction, Rule *rule, } matches = re->searchAll(input); - if (rule && rule->getActionsByName("capture").size() > 0 && transaction) { + if (rule && rule->getActionsByName("capture", + transaction).size() > 0 && transaction) { int i = 0; matches.reverse(); for (const SMatch& a : matches) { diff --git a/src/operators/verify_cc.cc b/src/operators/verify_cc.cc index 02807663..3d8bd4e3 100644 --- a/src/operators/verify_cc.cc +++ b/src/operators/verify_cc.cc @@ -143,7 +143,7 @@ bool VerifyCC::evaluate(Transaction *t, Rule *rule, if (is_cc) { if (t) { if (rule && t - && rule->getActionsByName("capture").size() > 0) { + && rule->getActionsByName("capture", t).size() > 0) { t->m_collections.m_tx_collection->storeOrUpdateFirst( "0", std::string(match)); #ifndef NO_LOGS diff --git a/src/operators/verify_cpf.cc b/src/operators/verify_cpf.cc index 94759ba1..3f26a5a8 100644 --- a/src/operators/verify_cpf.cc +++ b/src/operators/verify_cpf.cc @@ -134,7 +134,7 @@ bool VerifyCPF::evaluate(Transaction *t, Rule *rule, if (is_cpf) { logOffset(ruleMessage, i.m_offset, i.m_length); if (rule && t - && rule->getActionsByName("capture").size() > 0) { + && rule->getActionsByName("capture", t).size() > 0) { t->m_collections.m_tx_collection->storeOrUpdateFirst( "0", std::string(i.match)); #ifndef NO_LOGS diff --git a/src/operators/verify_ssn.cc b/src/operators/verify_ssn.cc index 91fdcab1..776f56df 100644 --- a/src/operators/verify_ssn.cc +++ b/src/operators/verify_ssn.cc @@ -125,7 +125,7 @@ bool VerifySSN::evaluate(Transaction *t, Rule *rule, if (is_ssn) { logOffset(ruleMessage, i.m_offset, i.m_length); if (rule && t - && rule->getActionsByName("capture").size() > 0) { + && rule->getActionsByName("capture", t).size() > 0) { t->m_collections.m_tx_collection->storeOrUpdateFirst( "0", std::string(i.match)); #ifndef NO_LOGS diff --git a/src/parser/driver.cc b/src/parser/driver.cc index cf67b1ba..157b4e9e 100644 --- a/src/parser/driver.cc +++ b/src/parser/driver.cc @@ -81,7 +81,7 @@ int Driver::addSecRule(Rule *rule) { if (lastRule->m_chainedRule == NULL) { rule->m_phase = lastRule->m_phase; lastRule->m_chainedRule = rule; - if (rule->containsDisruptiveAction()) { + if (rule->containsStaticDisruptiveAction()) { m_parserError << "Disruptive actions can only be specified by"; m_parserError << " chain starter rules."; return false; @@ -94,7 +94,7 @@ int Driver::addSecRule(Rule *rule) { } if (a->m_chained && a->m_chainedRule == NULL) { a->m_chainedRule = rule; - if (a->containsDisruptiveAction()) { + if (a->containsStaticDisruptiveAction()) { m_parserError << "Disruptive actions can only be "; m_parserError << "specified by chain starter rules."; return false; diff --git a/src/parser/seclang-parser.cc b/src/parser/seclang-parser.cc index 76409f4d..ad609362 100644 --- a/src/parser/seclang-parser.cc +++ b/src/parser/seclang-parser.cc @@ -2620,19 +2620,23 @@ namespace yy { } - std::vector *a = new std::vector(); - for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) { - a->push_back(i.release()); + if (driver.m_exceptions.loadUpdateActionById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) { + std::stringstream ss; + ss << "SecRuleUpdateActionById: failed to load:"; + ss << yystack_[1].value.as< std::string > (); + ss << ". "; + ss << error; + driver.error(yystack_[2].location, ss.str()); + YYERROR; } - driver.error(yystack_[2].location, "SecRuleUpdateActionById is not yet supported"); YYERROR; } -#line 2632 "seclang-parser.cc" // lalr1.cc:856 +#line 2636 "seclang-parser.cc" // lalr1.cc:856 break; case 123: -#line 1526 "seclang-parser.yy" // lalr1.cc:856 +#line 1530 "seclang-parser.yy" // lalr1.cc:856 { if (driver.m_debugLog != NULL) { driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str())); @@ -2644,11 +2648,11 @@ namespace yy { YYERROR; } } -#line 2648 "seclang-parser.cc" // lalr1.cc:856 +#line 2652 "seclang-parser.cc" // lalr1.cc:856 break; case 124: -#line 1538 "seclang-parser.yy" // lalr1.cc:856 +#line 1542 "seclang-parser.yy" // lalr1.cc:856 { if (driver.m_debugLog != NULL) { std::string error; @@ -2667,11 +2671,11 @@ namespace yy { YYERROR; } } -#line 2671 "seclang-parser.cc" // lalr1.cc:856 +#line 2675 "seclang-parser.cc" // lalr1.cc:856 break; case 125: -#line 1558 "seclang-parser.yy" // lalr1.cc:856 +#line 1562 "seclang-parser.yy" // lalr1.cc:856 { #if defined(WITH_GEOIP) or defined(WITH_MAXMIND) std::string err; @@ -2698,29 +2702,29 @@ namespace yy { YYERROR; #endif // WITH_GEOIP } -#line 2702 "seclang-parser.cc" // lalr1.cc:856 +#line 2706 "seclang-parser.cc" // lalr1.cc:856 break; case 126: -#line 1586 "seclang-parser.yy" // lalr1.cc:856 +#line 1590 "seclang-parser.yy" // lalr1.cc:856 { driver.m_requestBodyLimit.m_set = true; driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2711 "seclang-parser.cc" // lalr1.cc:856 +#line 2715 "seclang-parser.cc" // lalr1.cc:856 break; case 127: -#line 1591 "seclang-parser.yy" // lalr1.cc:856 +#line 1595 "seclang-parser.yy" // lalr1.cc:856 { driver.m_requestBodyNoFilesLimit.m_set = true; driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2720 "seclang-parser.cc" // lalr1.cc:856 +#line 2724 "seclang-parser.cc" // lalr1.cc:856 break; case 128: -#line 1596 "seclang-parser.yy" // lalr1.cc:856 +#line 1600 "seclang-parser.yy" // lalr1.cc:856 { std::stringstream ss; ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer "; @@ -2729,68 +2733,68 @@ namespace yy { driver.error(yystack_[1].location, ss.str()); YYERROR; } -#line 2733 "seclang-parser.cc" // lalr1.cc:856 +#line 2737 "seclang-parser.cc" // lalr1.cc:856 break; case 129: -#line 1605 "seclang-parser.yy" // lalr1.cc:856 +#line 1609 "seclang-parser.yy" // lalr1.cc:856 { driver.m_responseBodyLimit.m_set = true; driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str()); } -#line 2742 "seclang-parser.cc" // lalr1.cc:856 +#line 2746 "seclang-parser.cc" // lalr1.cc:856 break; case 130: -#line 1610 "seclang-parser.yy" // lalr1.cc:856 +#line 1614 "seclang-parser.yy" // lalr1.cc:856 { driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 2750 "seclang-parser.cc" // lalr1.cc:856 +#line 2754 "seclang-parser.cc" // lalr1.cc:856 break; case 131: -#line 1614 "seclang-parser.yy" // lalr1.cc:856 +#line 1618 "seclang-parser.yy" // lalr1.cc:856 { driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; } -#line 2758 "seclang-parser.cc" // lalr1.cc:856 +#line 2762 "seclang-parser.cc" // lalr1.cc:856 break; case 132: -#line 1618 "seclang-parser.yy" // lalr1.cc:856 +#line 1622 "seclang-parser.yy" // lalr1.cc:856 { driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction; } -#line 2766 "seclang-parser.cc" // lalr1.cc:856 +#line 2770 "seclang-parser.cc" // lalr1.cc:856 break; case 133: -#line 1622 "seclang-parser.yy" // lalr1.cc:856 +#line 1626 "seclang-parser.yy" // lalr1.cc:856 { driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction; } -#line 2774 "seclang-parser.cc" // lalr1.cc:856 +#line 2778 "seclang-parser.cc" // lalr1.cc:856 break; case 134: -#line 1626 "seclang-parser.yy" // lalr1.cc:856 +#line 1630 "seclang-parser.yy" // lalr1.cc:856 { driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction; } -#line 2782 "seclang-parser.cc" // lalr1.cc:856 +#line 2786 "seclang-parser.cc" // lalr1.cc:856 break; case 135: -#line 1630 "seclang-parser.yy" // lalr1.cc:856 +#line 1634 "seclang-parser.yy" // lalr1.cc:856 { driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction; } -#line 2790 "seclang-parser.cc" // lalr1.cc:856 +#line 2794 "seclang-parser.cc" // lalr1.cc:856 break; case 138: -#line 1644 "seclang-parser.yy" // lalr1.cc:856 +#line 1648 "seclang-parser.yy" // lalr1.cc:856 { std::istringstream buf(yystack_[0].value.as< std::string > ()); std::istream_iterator beg(buf), end; @@ -2802,37 +2806,37 @@ namespace yy { driver.m_responseBodyTypeToBeInspected.m_value.insert(*it); } } -#line 2806 "seclang-parser.cc" // lalr1.cc:856 +#line 2810 "seclang-parser.cc" // lalr1.cc:856 break; case 139: -#line 1656 "seclang-parser.yy" // lalr1.cc:856 +#line 1660 "seclang-parser.yy" // lalr1.cc:856 { driver.m_responseBodyTypeToBeInspected.m_set = true; driver.m_responseBodyTypeToBeInspected.m_clear = true; driver.m_responseBodyTypeToBeInspected.m_value.clear(); } -#line 2816 "seclang-parser.cc" // lalr1.cc:856 +#line 2820 "seclang-parser.cc" // lalr1.cc:856 break; case 140: -#line 1662 "seclang-parser.yy" // lalr1.cc:856 +#line 1666 "seclang-parser.yy" // lalr1.cc:856 { driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean; } -#line 2824 "seclang-parser.cc" // lalr1.cc:856 +#line 2828 "seclang-parser.cc" // lalr1.cc:856 break; case 141: -#line 1666 "seclang-parser.yy" // lalr1.cc:856 +#line 1670 "seclang-parser.yy" // lalr1.cc:856 { driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean; } -#line 2832 "seclang-parser.cc" // lalr1.cc:856 +#line 2836 "seclang-parser.cc" // lalr1.cc:856 break; case 142: -#line 1670 "seclang-parser.yy" // lalr1.cc:856 +#line 1674 "seclang-parser.yy" // lalr1.cc:856 { /* Parser error disabled to avoid breaking default installations with modsecurity.conf-recommended std::stringstream ss; @@ -2843,51 +2847,51 @@ namespace yy { YYERROR; */ } -#line 2847 "seclang-parser.cc" // lalr1.cc:856 +#line 2851 "seclang-parser.cc" // lalr1.cc:856 break; case 145: -#line 1691 "seclang-parser.yy" // lalr1.cc:856 +#line 1695 "seclang-parser.yy" // lalr1.cc:856 { if (atoi(yystack_[0].value.as< std::string > ().c_str()) == 1) { driver.error(yystack_[1].location, "SecCookieFormat 1 is not yet supported."); YYERROR; } } -#line 2858 "seclang-parser.cc" // lalr1.cc:856 +#line 2862 "seclang-parser.cc" // lalr1.cc:856 break; case 146: -#line 1698 "seclang-parser.yy" // lalr1.cc:856 +#line 1702 "seclang-parser.yy" // lalr1.cc:856 { driver.error(yystack_[1].location, "SecCookieV0Separator is not yet supported."); YYERROR; } -#line 2867 "seclang-parser.cc" // lalr1.cc:856 +#line 2871 "seclang-parser.cc" // lalr1.cc:856 break; case 149: -#line 1713 "seclang-parser.yy" // lalr1.cc:856 +#line 1717 "seclang-parser.yy" // lalr1.cc:856 { /* Parser error disabled to avoid breaking default CRS installations with crs-setup.conf-recommended driver.error(@0, "SecCollectionTimeout is not yet supported."); YYERROR; */ } -#line 2878 "seclang-parser.cc" // lalr1.cc:856 +#line 2882 "seclang-parser.cc" // lalr1.cc:856 break; case 150: -#line 1720 "seclang-parser.yy" // lalr1.cc:856 +#line 1724 "seclang-parser.yy" // lalr1.cc:856 { driver.m_httpblKey.m_set = true; driver.m_httpblKey.m_value = yystack_[0].value.as< std::string > (); } -#line 2887 "seclang-parser.cc" // lalr1.cc:856 +#line 2891 "seclang-parser.cc" // lalr1.cc:856 break; case 151: -#line 1728 "seclang-parser.yy" // lalr1.cc:856 +#line 1732 "seclang-parser.yy" // lalr1.cc:856 { std::unique_ptr > > originalList = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); std::unique_ptr>> newList(new std::vector>()); @@ -2921,2364 +2925,2364 @@ namespace yy { } yylhs.value.as< std::unique_ptr > > > () = std::move(newNewList); } -#line 2925 "seclang-parser.cc" // lalr1.cc:856 +#line 2929 "seclang-parser.cc" // lalr1.cc:856 break; case 152: -#line 1765 "seclang-parser.yy" // lalr1.cc:856 +#line 1769 "seclang-parser.yy" // lalr1.cc:856 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ()); } -#line 2933 "seclang-parser.cc" // lalr1.cc:856 +#line 2937 "seclang-parser.cc" // lalr1.cc:856 break; case 153: -#line 1769 "seclang-parser.yy" // lalr1.cc:856 +#line 1773 "seclang-parser.yy" // lalr1.cc:856 { yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ()); } -#line 2941 "seclang-parser.cc" // lalr1.cc:856 +#line 2945 "seclang-parser.cc" // lalr1.cc:856 break; case 154: -#line 1776 "seclang-parser.yy" // lalr1.cc:856 +#line 1780 "seclang-parser.yy" // lalr1.cc:856 { 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 2950 "seclang-parser.cc" // lalr1.cc:856 +#line 2954 "seclang-parser.cc" // lalr1.cc:856 break; case 155: -#line 1781 "seclang-parser.yy" // lalr1.cc:856 +#line 1785 "seclang-parser.yy" // lalr1.cc:856 { 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 2960 "seclang-parser.cc" // lalr1.cc:856 +#line 2964 "seclang-parser.cc" // lalr1.cc:856 break; case 156: -#line 1787 "seclang-parser.yy" // lalr1.cc:856 +#line 1791 "seclang-parser.yy" // lalr1.cc:856 { 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 2970 "seclang-parser.cc" // lalr1.cc:856 +#line 2974 "seclang-parser.cc" // lalr1.cc:856 break; case 157: -#line 1793 "seclang-parser.yy" // lalr1.cc:856 +#line 1797 "seclang-parser.yy" // lalr1.cc:856 { 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 2980 "seclang-parser.cc" // lalr1.cc:856 +#line 2984 "seclang-parser.cc" // lalr1.cc:856 break; case 158: -#line 1799 "seclang-parser.yy" // lalr1.cc:856 +#line 1803 "seclang-parser.yy" // lalr1.cc:856 { 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 2991 "seclang-parser.cc" // lalr1.cc:856 +#line 2995 "seclang-parser.cc" // lalr1.cc:856 break; case 159: -#line 1806 "seclang-parser.yy" // lalr1.cc:856 +#line 1810 "seclang-parser.yy" // lalr1.cc:856 { 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 3002 "seclang-parser.cc" // lalr1.cc:856 +#line 3006 "seclang-parser.cc" // lalr1.cc:856 break; case 160: -#line 1816 "seclang-parser.yy" // lalr1.cc:856 +#line 1820 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3010 "seclang-parser.cc" // lalr1.cc:856 +#line 3014 "seclang-parser.cc" // lalr1.cc:856 break; case 161: -#line 1820 "seclang-parser.yy" // lalr1.cc:856 +#line 1824 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3018 "seclang-parser.cc" // lalr1.cc:856 +#line 3022 "seclang-parser.cc" // lalr1.cc:856 break; case 162: -#line 1824 "seclang-parser.yy" // lalr1.cc:856 +#line 1828 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_NoDictElement()); } -#line 3026 "seclang-parser.cc" // lalr1.cc:856 +#line 3030 "seclang-parser.cc" // lalr1.cc:856 break; case 163: -#line 1828 "seclang-parser.yy" // lalr1.cc:856 +#line 1832 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3034 "seclang-parser.cc" // lalr1.cc:856 +#line 3038 "seclang-parser.cc" // lalr1.cc:856 break; case 164: -#line 1832 "seclang-parser.yy" // lalr1.cc:856 +#line 1836 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3042 "seclang-parser.cc" // lalr1.cc:856 +#line 3046 "seclang-parser.cc" // lalr1.cc:856 break; case 165: -#line 1836 "seclang-parser.yy" // lalr1.cc:856 +#line 1840 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_NoDictElement()); } -#line 3050 "seclang-parser.cc" // lalr1.cc:856 +#line 3054 "seclang-parser.cc" // lalr1.cc:856 break; case 166: -#line 1840 "seclang-parser.yy" // lalr1.cc:856 +#line 1844 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3058 "seclang-parser.cc" // lalr1.cc:856 +#line 3062 "seclang-parser.cc" // lalr1.cc:856 break; case 167: -#line 1844 "seclang-parser.yy" // lalr1.cc:856 +#line 1848 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3066 "seclang-parser.cc" // lalr1.cc:856 +#line 3070 "seclang-parser.cc" // lalr1.cc:856 break; case 168: -#line 1848 "seclang-parser.yy" // lalr1.cc:856 +#line 1852 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_NoDictElement()); } -#line 3074 "seclang-parser.cc" // lalr1.cc:856 +#line 3078 "seclang-parser.cc" // lalr1.cc:856 break; case 169: -#line 1852 "seclang-parser.yy" // lalr1.cc:856 +#line 1856 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3082 "seclang-parser.cc" // lalr1.cc:856 +#line 3086 "seclang-parser.cc" // lalr1.cc:856 break; case 170: -#line 1856 "seclang-parser.yy" // lalr1.cc:856 +#line 1860 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3090 "seclang-parser.cc" // lalr1.cc:856 +#line 3094 "seclang-parser.cc" // lalr1.cc:856 break; case 171: -#line 1860 "seclang-parser.yy" // lalr1.cc:856 +#line 1864 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_NoDictElement()); } -#line 3098 "seclang-parser.cc" // lalr1.cc:856 +#line 3102 "seclang-parser.cc" // lalr1.cc:856 break; case 172: -#line 1864 "seclang-parser.yy" // lalr1.cc:856 +#line 1868 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3106 "seclang-parser.cc" // lalr1.cc:856 +#line 3110 "seclang-parser.cc" // lalr1.cc:856 break; case 173: -#line 1868 "seclang-parser.yy" // lalr1.cc:856 +#line 1872 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3114 "seclang-parser.cc" // lalr1.cc:856 +#line 3118 "seclang-parser.cc" // lalr1.cc:856 break; case 174: -#line 1872 "seclang-parser.yy" // lalr1.cc:856 +#line 1876 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_NoDictElement()); } -#line 3122 "seclang-parser.cc" // lalr1.cc:856 +#line 3126 "seclang-parser.cc" // lalr1.cc:856 break; case 175: -#line 1876 "seclang-parser.yy" // lalr1.cc:856 +#line 1880 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3130 "seclang-parser.cc" // lalr1.cc:856 +#line 3134 "seclang-parser.cc" // lalr1.cc:856 break; case 176: -#line 1880 "seclang-parser.yy" // lalr1.cc:856 +#line 1884 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3138 "seclang-parser.cc" // lalr1.cc:856 +#line 3142 "seclang-parser.cc" // lalr1.cc:856 break; case 177: -#line 1884 "seclang-parser.yy" // lalr1.cc:856 +#line 1888 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_NoDictElement()); } -#line 3146 "seclang-parser.cc" // lalr1.cc:856 +#line 3150 "seclang-parser.cc" // lalr1.cc:856 break; case 178: -#line 1888 "seclang-parser.yy" // lalr1.cc:856 +#line 1892 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3154 "seclang-parser.cc" // lalr1.cc:856 +#line 3158 "seclang-parser.cc" // lalr1.cc:856 break; case 179: -#line 1892 "seclang-parser.yy" // lalr1.cc:856 +#line 1896 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3162 "seclang-parser.cc" // lalr1.cc:856 +#line 3166 "seclang-parser.cc" // lalr1.cc:856 break; case 180: -#line 1896 "seclang-parser.yy" // lalr1.cc:856 +#line 1900 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_NoDictElement()); } -#line 3170 "seclang-parser.cc" // lalr1.cc:856 +#line 3174 "seclang-parser.cc" // lalr1.cc:856 break; case 181: -#line 1900 "seclang-parser.yy" // lalr1.cc:856 +#line 1904 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3178 "seclang-parser.cc" // lalr1.cc:856 +#line 3182 "seclang-parser.cc" // lalr1.cc:856 break; case 182: -#line 1904 "seclang-parser.yy" // lalr1.cc:856 +#line 1908 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3186 "seclang-parser.cc" // lalr1.cc:856 +#line 3190 "seclang-parser.cc" // lalr1.cc:856 break; case 183: -#line 1908 "seclang-parser.yy" // lalr1.cc:856 +#line 1912 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_NoDictElement()); } -#line 3194 "seclang-parser.cc" // lalr1.cc:856 +#line 3198 "seclang-parser.cc" // lalr1.cc:856 break; case 184: -#line 1912 "seclang-parser.yy" // lalr1.cc:856 +#line 1916 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3202 "seclang-parser.cc" // lalr1.cc:856 +#line 3206 "seclang-parser.cc" // lalr1.cc:856 break; case 185: -#line 1916 "seclang-parser.yy" // lalr1.cc:856 +#line 1920 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3210 "seclang-parser.cc" // lalr1.cc:856 +#line 3214 "seclang-parser.cc" // lalr1.cc:856 break; case 186: -#line 1920 "seclang-parser.yy" // lalr1.cc:856 +#line 1924 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_NoDictElement()); } -#line 3218 "seclang-parser.cc" // lalr1.cc:856 +#line 3222 "seclang-parser.cc" // lalr1.cc:856 break; case 187: -#line 1924 "seclang-parser.yy" // lalr1.cc:856 +#line 1928 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3226 "seclang-parser.cc" // lalr1.cc:856 +#line 3230 "seclang-parser.cc" // lalr1.cc:856 break; case 188: -#line 1928 "seclang-parser.yy" // lalr1.cc:856 +#line 1932 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3234 "seclang-parser.cc" // lalr1.cc:856 +#line 3238 "seclang-parser.cc" // lalr1.cc:856 break; case 189: -#line 1932 "seclang-parser.yy" // lalr1.cc:856 +#line 1936 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_NoDictElement()); } -#line 3242 "seclang-parser.cc" // lalr1.cc:856 +#line 3246 "seclang-parser.cc" // lalr1.cc:856 break; case 190: -#line 1936 "seclang-parser.yy" // lalr1.cc:856 +#line 1940 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3250 "seclang-parser.cc" // lalr1.cc:856 +#line 3254 "seclang-parser.cc" // lalr1.cc:856 break; case 191: -#line 1940 "seclang-parser.yy" // lalr1.cc:856 +#line 1944 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3258 "seclang-parser.cc" // lalr1.cc:856 +#line 3262 "seclang-parser.cc" // lalr1.cc:856 break; case 192: -#line 1944 "seclang-parser.yy" // lalr1.cc:856 +#line 1948 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_NoDictElement()); } -#line 3266 "seclang-parser.cc" // lalr1.cc:856 +#line 3270 "seclang-parser.cc" // lalr1.cc:856 break; case 193: -#line 1948 "seclang-parser.yy" // lalr1.cc:856 +#line 1952 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3274 "seclang-parser.cc" // lalr1.cc:856 +#line 3278 "seclang-parser.cc" // lalr1.cc:856 break; case 194: -#line 1952 "seclang-parser.yy" // lalr1.cc:856 +#line 1956 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3282 "seclang-parser.cc" // lalr1.cc:856 +#line 3286 "seclang-parser.cc" // lalr1.cc:856 break; case 195: -#line 1956 "seclang-parser.yy" // lalr1.cc:856 +#line 1960 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_NoDictElement()); } -#line 3290 "seclang-parser.cc" // lalr1.cc:856 +#line 3294 "seclang-parser.cc" // lalr1.cc:856 break; case 196: -#line 1960 "seclang-parser.yy" // lalr1.cc:856 +#line 1964 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3298 "seclang-parser.cc" // lalr1.cc:856 +#line 3302 "seclang-parser.cc" // lalr1.cc:856 break; case 197: -#line 1964 "seclang-parser.yy" // lalr1.cc:856 +#line 1968 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3306 "seclang-parser.cc" // lalr1.cc:856 +#line 3310 "seclang-parser.cc" // lalr1.cc:856 break; case 198: -#line 1968 "seclang-parser.yy" // lalr1.cc:856 +#line 1972 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_NoDictElement()); } -#line 3314 "seclang-parser.cc" // lalr1.cc:856 +#line 3318 "seclang-parser.cc" // lalr1.cc:856 break; case 199: -#line 1972 "seclang-parser.yy" // lalr1.cc:856 +#line 1976 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3322 "seclang-parser.cc" // lalr1.cc:856 +#line 3326 "seclang-parser.cc" // lalr1.cc:856 break; case 200: -#line 1976 "seclang-parser.yy" // lalr1.cc:856 +#line 1980 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3330 "seclang-parser.cc" // lalr1.cc:856 +#line 3334 "seclang-parser.cc" // lalr1.cc:856 break; case 201: -#line 1980 "seclang-parser.yy" // lalr1.cc:856 +#line 1984 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_NoDictElement()); } -#line 3338 "seclang-parser.cc" // lalr1.cc:856 +#line 3342 "seclang-parser.cc" // lalr1.cc:856 break; case 202: -#line 1984 "seclang-parser.yy" // lalr1.cc:856 +#line 1988 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3346 "seclang-parser.cc" // lalr1.cc:856 +#line 3350 "seclang-parser.cc" // lalr1.cc:856 break; case 203: -#line 1988 "seclang-parser.yy" // lalr1.cc:856 +#line 1992 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3354 "seclang-parser.cc" // lalr1.cc:856 +#line 3358 "seclang-parser.cc" // lalr1.cc:856 break; case 204: -#line 1992 "seclang-parser.yy" // lalr1.cc:856 +#line 1996 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_NoDictElement()); } -#line 3362 "seclang-parser.cc" // lalr1.cc:856 +#line 3366 "seclang-parser.cc" // lalr1.cc:856 break; case 205: -#line 1996 "seclang-parser.yy" // lalr1.cc:856 +#line 2000 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3370 "seclang-parser.cc" // lalr1.cc:856 +#line 3374 "seclang-parser.cc" // lalr1.cc:856 break; case 206: -#line 2000 "seclang-parser.yy" // lalr1.cc:856 +#line 2004 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3378 "seclang-parser.cc" // lalr1.cc:856 +#line 3382 "seclang-parser.cc" // lalr1.cc:856 break; case 207: -#line 2004 "seclang-parser.yy" // lalr1.cc:856 +#line 2008 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_NoDictElement()); } -#line 3386 "seclang-parser.cc" // lalr1.cc:856 +#line 3390 "seclang-parser.cc" // lalr1.cc:856 break; case 208: -#line 2008 "seclang-parser.yy" // lalr1.cc:856 +#line 2012 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3394 "seclang-parser.cc" // lalr1.cc:856 +#line 3398 "seclang-parser.cc" // lalr1.cc:856 break; case 209: -#line 2012 "seclang-parser.yy" // lalr1.cc:856 +#line 2016 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3402 "seclang-parser.cc" // lalr1.cc:856 +#line 3406 "seclang-parser.cc" // lalr1.cc:856 break; case 210: -#line 2016 "seclang-parser.yy" // lalr1.cc:856 +#line 2020 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_NoDictElement()); } -#line 3410 "seclang-parser.cc" // lalr1.cc:856 +#line 3414 "seclang-parser.cc" // lalr1.cc:856 break; case 211: -#line 2020 "seclang-parser.yy" // lalr1.cc:856 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); - } -#line 3418 "seclang-parser.cc" // lalr1.cc:856 - break; - - case 212: #line 2024 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); } -#line 3426 "seclang-parser.cc" // lalr1.cc:856 +#line 3422 "seclang-parser.cc" // lalr1.cc:856 + break; + + case 212: +#line 2028 "seclang-parser.yy" // lalr1.cc:856 + { + VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ())); + } +#line 3430 "seclang-parser.cc" // lalr1.cc:856 break; case 213: -#line 2028 "seclang-parser.yy" // lalr1.cc:856 +#line 2032 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV")); } -#line 3434 "seclang-parser.cc" // lalr1.cc:856 +#line 3438 "seclang-parser.cc" // lalr1.cc:856 break; case 214: -#line 2032 "seclang-parser.yy" // lalr1.cc:856 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); - } -#line 3442 "seclang-parser.cc" // lalr1.cc:856 - break; - - case 215: #line 2036 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); } -#line 3450 "seclang-parser.cc" // lalr1.cc:856 +#line 3446 "seclang-parser.cc" // lalr1.cc:856 + break; + + case 215: +#line 2040 "seclang-parser.yy" // lalr1.cc:856 + { + VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ())); + } +#line 3454 "seclang-parser.cc" // lalr1.cc:856 break; case 216: -#line 2040 "seclang-parser.yy" // lalr1.cc:856 +#line 2044 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML_NoDictElement()); } -#line 3458 "seclang-parser.cc" // lalr1.cc:856 +#line 3462 "seclang-parser.cc" // lalr1.cc:856 break; case 217: -#line 2044 "seclang-parser.yy" // lalr1.cc:856 +#line 2048 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3466 "seclang-parser.cc" // lalr1.cc:856 +#line 3470 "seclang-parser.cc" // lalr1.cc:856 break; case 218: -#line 2048 "seclang-parser.yy" // lalr1.cc:856 +#line 2052 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3474 "seclang-parser.cc" // lalr1.cc:856 +#line 3478 "seclang-parser.cc" // lalr1.cc:856 break; case 219: -#line 2052 "seclang-parser.yy" // lalr1.cc:856 +#line 2056 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_NoDictElement()); } -#line 3482 "seclang-parser.cc" // lalr1.cc:856 +#line 3486 "seclang-parser.cc" // lalr1.cc:856 break; case 220: -#line 2056 "seclang-parser.yy" // lalr1.cc:856 +#line 2060 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3490 "seclang-parser.cc" // lalr1.cc:856 +#line 3494 "seclang-parser.cc" // lalr1.cc:856 break; case 221: -#line 2060 "seclang-parser.yy" // lalr1.cc:856 +#line 2064 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3498 "seclang-parser.cc" // lalr1.cc:856 +#line 3502 "seclang-parser.cc" // lalr1.cc:856 break; case 222: -#line 2064 "seclang-parser.yy" // lalr1.cc:856 +#line 2068 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3506 "seclang-parser.cc" // lalr1.cc:856 +#line 3510 "seclang-parser.cc" // lalr1.cc:856 break; case 223: -#line 2068 "seclang-parser.yy" // lalr1.cc:856 +#line 2072 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Resource_NoDictElement()); } -#line 3514 "seclang-parser.cc" // lalr1.cc:856 +#line 3518 "seclang-parser.cc" // lalr1.cc:856 break; case 224: -#line 2072 "seclang-parser.yy" // lalr1.cc:856 +#line 2076 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3522 "seclang-parser.cc" // lalr1.cc:856 +#line 3526 "seclang-parser.cc" // lalr1.cc:856 break; case 225: -#line 2076 "seclang-parser.yy" // lalr1.cc:856 +#line 2080 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3530 "seclang-parser.cc" // lalr1.cc:856 +#line 3534 "seclang-parser.cc" // lalr1.cc:856 break; case 226: -#line 2080 "seclang-parser.yy" // lalr1.cc:856 +#line 2084 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3538 "seclang-parser.cc" // lalr1.cc:856 +#line 3542 "seclang-parser.cc" // lalr1.cc:856 break; case 227: -#line 2084 "seclang-parser.yy" // lalr1.cc:856 +#line 2088 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_NoDictElement()); } -#line 3546 "seclang-parser.cc" // lalr1.cc:856 +#line 3550 "seclang-parser.cc" // lalr1.cc:856 break; case 228: -#line 2088 "seclang-parser.yy" // lalr1.cc:856 +#line 2092 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3554 "seclang-parser.cc" // lalr1.cc:856 +#line 3558 "seclang-parser.cc" // lalr1.cc:856 break; case 229: -#line 2092 "seclang-parser.yy" // lalr1.cc:856 +#line 2096 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3562 "seclang-parser.cc" // lalr1.cc:856 +#line 3566 "seclang-parser.cc" // lalr1.cc:856 break; case 230: -#line 2096 "seclang-parser.yy" // lalr1.cc:856 +#line 2100 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3570 "seclang-parser.cc" // lalr1.cc:856 +#line 3574 "seclang-parser.cc" // lalr1.cc:856 break; case 231: -#line 2100 "seclang-parser.yy" // lalr1.cc:856 +#line 2104 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_NoDictElement()); } -#line 3578 "seclang-parser.cc" // lalr1.cc:856 +#line 3582 "seclang-parser.cc" // lalr1.cc:856 break; case 232: -#line 2104 "seclang-parser.yy" // lalr1.cc:856 +#line 2108 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3586 "seclang-parser.cc" // lalr1.cc:856 +#line 3590 "seclang-parser.cc" // lalr1.cc:856 break; case 233: -#line 2108 "seclang-parser.yy" // lalr1.cc:856 +#line 2112 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3594 "seclang-parser.cc" // lalr1.cc:856 +#line 3598 "seclang-parser.cc" // lalr1.cc:856 break; case 234: -#line 2112 "seclang-parser.yy" // lalr1.cc:856 +#line 2116 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3602 "seclang-parser.cc" // lalr1.cc:856 +#line 3606 "seclang-parser.cc" // lalr1.cc:856 break; case 235: -#line 2116 "seclang-parser.yy" // lalr1.cc:856 +#line 2120 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::User_NoDictElement()); } -#line 3610 "seclang-parser.cc" // lalr1.cc:856 +#line 3614 "seclang-parser.cc" // lalr1.cc:856 break; case 236: -#line 2120 "seclang-parser.yy" // lalr1.cc:856 +#line 2124 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3618 "seclang-parser.cc" // lalr1.cc:856 +#line 3622 "seclang-parser.cc" // lalr1.cc:856 break; case 237: -#line 2124 "seclang-parser.yy" // lalr1.cc:856 +#line 2128 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3626 "seclang-parser.cc" // lalr1.cc:856 +#line 3630 "seclang-parser.cc" // lalr1.cc:856 break; case 238: -#line 2128 "seclang-parser.yy" // lalr1.cc:856 +#line 2132 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3634 "seclang-parser.cc" // lalr1.cc:856 +#line 3638 "seclang-parser.cc" // lalr1.cc:856 break; case 239: -#line 2132 "seclang-parser.yy" // lalr1.cc:856 +#line 2136 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_NoDictElement()); } -#line 3642 "seclang-parser.cc" // lalr1.cc:856 +#line 3646 "seclang-parser.cc" // lalr1.cc:856 break; case 240: -#line 2136 "seclang-parser.yy" // lalr1.cc:856 +#line 2140 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DynamicElement(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 3650 "seclang-parser.cc" // lalr1.cc:856 +#line 3654 "seclang-parser.cc" // lalr1.cc:856 break; case 241: -#line 2140 "seclang-parser.yy" // lalr1.cc:856 +#line 2144 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3658 "seclang-parser.cc" // lalr1.cc:856 +#line 3662 "seclang-parser.cc" // lalr1.cc:856 break; case 242: -#line 2144 "seclang-parser.yy" // lalr1.cc:856 +#line 2148 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3666 "seclang-parser.cc" // lalr1.cc:856 +#line 3670 "seclang-parser.cc" // lalr1.cc:856 break; case 243: -#line 2148 "seclang-parser.yy" // lalr1.cc:856 +#line 2152 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_NoDictElement()); } -#line 3674 "seclang-parser.cc" // lalr1.cc:856 +#line 3678 "seclang-parser.cc" // lalr1.cc:856 break; case 244: -#line 2152 "seclang-parser.yy" // lalr1.cc:856 +#line 2156 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3682 "seclang-parser.cc" // lalr1.cc:856 +#line 3686 "seclang-parser.cc" // lalr1.cc:856 break; case 245: -#line 2156 "seclang-parser.yy" // lalr1.cc:856 +#line 2160 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3690 "seclang-parser.cc" // lalr1.cc:856 +#line 3694 "seclang-parser.cc" // lalr1.cc:856 break; case 246: -#line 2160 "seclang-parser.yy" // lalr1.cc:856 +#line 2164 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_NoDictElement()); } -#line 3698 "seclang-parser.cc" // lalr1.cc:856 +#line 3702 "seclang-parser.cc" // lalr1.cc:856 break; case 247: -#line 2164 "seclang-parser.yy" // lalr1.cc:856 +#line 2168 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3706 "seclang-parser.cc" // lalr1.cc:856 +#line 3710 "seclang-parser.cc" // lalr1.cc:856 break; case 248: -#line 2168 "seclang-parser.yy" // lalr1.cc:856 +#line 2172 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3714 "seclang-parser.cc" // lalr1.cc:856 +#line 3718 "seclang-parser.cc" // lalr1.cc:856 break; case 249: -#line 2172 "seclang-parser.yy" // lalr1.cc:856 +#line 2176 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_NoDictElement()); } -#line 3722 "seclang-parser.cc" // lalr1.cc:856 +#line 3726 "seclang-parser.cc" // lalr1.cc:856 break; case 250: -#line 2177 "seclang-parser.yy" // lalr1.cc:856 +#line 2181 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3730 "seclang-parser.cc" // lalr1.cc:856 +#line 3734 "seclang-parser.cc" // lalr1.cc:856 break; case 251: -#line 2181 "seclang-parser.yy" // lalr1.cc:856 +#line 2185 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3738 "seclang-parser.cc" // lalr1.cc:856 +#line 3742 "seclang-parser.cc" // lalr1.cc:856 break; case 252: -#line 2185 "seclang-parser.yy" // lalr1.cc:856 +#line 2189 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_NoDictElement()); } -#line 3746 "seclang-parser.cc" // lalr1.cc:856 +#line 3750 "seclang-parser.cc" // lalr1.cc:856 break; case 253: -#line 2190 "seclang-parser.yy" // lalr1.cc:856 +#line 2194 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3754 "seclang-parser.cc" // lalr1.cc:856 +#line 3758 "seclang-parser.cc" // lalr1.cc:856 break; case 254: -#line 2194 "seclang-parser.yy" // lalr1.cc:856 +#line 2198 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3762 "seclang-parser.cc" // lalr1.cc:856 +#line 3766 "seclang-parser.cc" // lalr1.cc:856 break; case 255: -#line 2198 "seclang-parser.yy" // lalr1.cc:856 +#line 2202 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_NoDictElement()); } -#line 3770 "seclang-parser.cc" // lalr1.cc:856 +#line 3774 "seclang-parser.cc" // lalr1.cc:856 break; case 256: -#line 2203 "seclang-parser.yy" // lalr1.cc:856 +#line 2207 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentType()); } -#line 3778 "seclang-parser.cc" // lalr1.cc:856 +#line 3782 "seclang-parser.cc" // lalr1.cc:856 break; case 257: -#line 2208 "seclang-parser.yy" // lalr1.cc:856 +#line 2212 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElement(yystack_[0].value.as< std::string > ())); } -#line 3786 "seclang-parser.cc" // lalr1.cc:856 +#line 3790 "seclang-parser.cc" // lalr1.cc:856 break; case 258: -#line 2212 "seclang-parser.yy" // lalr1.cc:856 +#line 2216 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ())); } -#line 3794 "seclang-parser.cc" // lalr1.cc:856 +#line 3798 "seclang-parser.cc" // lalr1.cc:856 break; case 259: -#line 2216 "seclang-parser.yy" // lalr1.cc:856 +#line 2220 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_NoDictElement()); } -#line 3802 "seclang-parser.cc" // lalr1.cc:856 +#line 3806 "seclang-parser.cc" // lalr1.cc:856 break; case 260: -#line 2220 "seclang-parser.yy" // lalr1.cc:856 +#line 2224 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsCombinedSize()); } -#line 3810 "seclang-parser.cc" // lalr1.cc:856 +#line 3814 "seclang-parser.cc" // lalr1.cc:856 break; case 261: -#line 2224 "seclang-parser.yy" // lalr1.cc:856 +#line 2228 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::AuthType()); } -#line 3818 "seclang-parser.cc" // lalr1.cc:856 +#line 3822 "seclang-parser.cc" // lalr1.cc:856 break; case 262: -#line 2228 "seclang-parser.yy" // lalr1.cc:856 +#line 2232 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesCombinedSize()); } -#line 3826 "seclang-parser.cc" // lalr1.cc:856 +#line 3830 "seclang-parser.cc" // lalr1.cc:856 break; case 263: -#line 2232 "seclang-parser.yy" // lalr1.cc:856 +#line 2236 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequest()); } -#line 3834 "seclang-parser.cc" // lalr1.cc:856 +#line 3838 "seclang-parser.cc" // lalr1.cc:856 break; case 264: -#line 2236 "seclang-parser.yy" // lalr1.cc:856 +#line 2240 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequestLength()); } -#line 3842 "seclang-parser.cc" // lalr1.cc:856 +#line 3846 "seclang-parser.cc" // lalr1.cc:856 break; case 265: -#line 2240 "seclang-parser.yy" // lalr1.cc:856 +#line 2244 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::InboundDataError()); } -#line 3850 "seclang-parser.cc" // lalr1.cc:856 +#line 3854 "seclang-parser.cc" // lalr1.cc:856 break; case 266: -#line 2244 "seclang-parser.yy" // lalr1.cc:856 +#line 2248 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVar()); } -#line 3858 "seclang-parser.cc" // lalr1.cc:856 +#line 3862 "seclang-parser.cc" // lalr1.cc:856 break; case 267: -#line 2248 "seclang-parser.yy" // lalr1.cc:856 +#line 2252 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarName()); } -#line 3866 "seclang-parser.cc" // lalr1.cc:856 +#line 3870 "seclang-parser.cc" // lalr1.cc:856 break; case 268: -#line 2252 "seclang-parser.yy" // lalr1.cc:856 +#line 2256 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryQuoted()); } -#line 3874 "seclang-parser.cc" // lalr1.cc:856 +#line 3878 "seclang-parser.cc" // lalr1.cc:856 break; case 269: -#line 2256 "seclang-parser.yy" // lalr1.cc:856 +#line 2260 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartBoundaryWhiteSpace()); } -#line 3882 "seclang-parser.cc" // lalr1.cc:856 +#line 3886 "seclang-parser.cc" // lalr1.cc:856 break; case 270: -#line 2260 "seclang-parser.yy" // lalr1.cc:856 +#line 2264 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartCrlfLFLines()); } -#line 3890 "seclang-parser.cc" // lalr1.cc:856 +#line 3894 "seclang-parser.cc" // lalr1.cc:856 break; case 271: -#line 2264 "seclang-parser.yy" // lalr1.cc:856 +#line 2268 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateAfter()); } -#line 3898 "seclang-parser.cc" // lalr1.cc:856 +#line 3902 "seclang-parser.cc" // lalr1.cc:856 break; case 272: -#line 2268 "seclang-parser.yy" // lalr1.cc:856 +#line 2272 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateBefore()); } -#line 3906 "seclang-parser.cc" // lalr1.cc:856 +#line 3910 "seclang-parser.cc" // lalr1.cc:856 break; case 273: -#line 2272 "seclang-parser.yy" // lalr1.cc:856 +#line 2276 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartFileLimitExceeded()); } -#line 3914 "seclang-parser.cc" // lalr1.cc:856 +#line 3918 "seclang-parser.cc" // lalr1.cc:856 break; case 274: -#line 2276 "seclang-parser.yy" // lalr1.cc:856 +#line 2280 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartHeaderFolding()); } -#line 3922 "seclang-parser.cc" // lalr1.cc:856 +#line 3926 "seclang-parser.cc" // lalr1.cc:856 break; case 275: -#line 2280 "seclang-parser.yy" // lalr1.cc:856 +#line 2284 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidHeaderFolding()); } -#line 3930 "seclang-parser.cc" // lalr1.cc:856 +#line 3934 "seclang-parser.cc" // lalr1.cc:856 break; case 276: -#line 2284 "seclang-parser.yy" // lalr1.cc:856 +#line 2288 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidPart()); } -#line 3938 "seclang-parser.cc" // lalr1.cc:856 +#line 3942 "seclang-parser.cc" // lalr1.cc:856 break; case 277: -#line 2288 "seclang-parser.yy" // lalr1.cc:856 +#line 2292 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidQuoting()); } -#line 3946 "seclang-parser.cc" // lalr1.cc:856 +#line 3950 "seclang-parser.cc" // lalr1.cc:856 break; case 278: -#line 2292 "seclang-parser.yy" // lalr1.cc:856 +#line 2296 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartLFLine()); } -#line 3954 "seclang-parser.cc" // lalr1.cc:856 +#line 3958 "seclang-parser.cc" // lalr1.cc:856 break; case 279: -#line 2296 "seclang-parser.yy" // lalr1.cc:856 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); - } -#line 3962 "seclang-parser.cc" // lalr1.cc:856 - break; - - case 280: #line 2300 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); } -#line 3970 "seclang-parser.cc" // lalr1.cc:856 +#line 3966 "seclang-parser.cc" // lalr1.cc:856 + break; + + case 280: +#line 2304 "seclang-parser.yy" // lalr1.cc:856 + { + VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartMissingSemicolon()); + } +#line 3974 "seclang-parser.cc" // lalr1.cc:856 break; case 281: -#line 2304 "seclang-parser.yy" // lalr1.cc:856 +#line 2308 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartStrictError()); } -#line 3978 "seclang-parser.cc" // lalr1.cc:856 +#line 3982 "seclang-parser.cc" // lalr1.cc:856 break; case 282: -#line 2308 "seclang-parser.yy" // lalr1.cc:856 +#line 2312 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartUnmatchedBoundary()); } -#line 3986 "seclang-parser.cc" // lalr1.cc:856 +#line 3990 "seclang-parser.cc" // lalr1.cc:856 break; case 283: -#line 2312 "seclang-parser.yy" // lalr1.cc:856 +#line 2316 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::OutboundDataError()); } -#line 3994 "seclang-parser.cc" // lalr1.cc:856 +#line 3998 "seclang-parser.cc" // lalr1.cc:856 break; case 284: -#line 2316 "seclang-parser.yy" // lalr1.cc:856 +#line 2320 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::PathInfo()); } -#line 4002 "seclang-parser.cc" // lalr1.cc:856 +#line 4006 "seclang-parser.cc" // lalr1.cc:856 break; case 285: -#line 2320 "seclang-parser.yy" // lalr1.cc:856 +#line 2324 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::QueryString()); } -#line 4010 "seclang-parser.cc" // lalr1.cc:856 +#line 4014 "seclang-parser.cc" // lalr1.cc:856 break; case 286: -#line 2324 "seclang-parser.yy" // lalr1.cc:856 +#line 2328 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteAddr()); } -#line 4018 "seclang-parser.cc" // lalr1.cc:856 +#line 4022 "seclang-parser.cc" // lalr1.cc:856 break; case 287: -#line 2328 "seclang-parser.yy" // lalr1.cc:856 +#line 2332 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteHost()); } -#line 4026 "seclang-parser.cc" // lalr1.cc:856 +#line 4030 "seclang-parser.cc" // lalr1.cc:856 break; case 288: -#line 2332 "seclang-parser.yy" // lalr1.cc:856 +#line 2336 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemotePort()); } -#line 4034 "seclang-parser.cc" // lalr1.cc:856 +#line 4038 "seclang-parser.cc" // lalr1.cc:856 break; case 289: -#line 2336 "seclang-parser.yy" // lalr1.cc:856 +#line 2340 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyError()); } -#line 4042 "seclang-parser.cc" // lalr1.cc:856 +#line 4046 "seclang-parser.cc" // lalr1.cc:856 break; case 290: -#line 2340 "seclang-parser.yy" // lalr1.cc:856 +#line 2344 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyErrorMsg()); } -#line 4050 "seclang-parser.cc" // lalr1.cc:856 +#line 4054 "seclang-parser.cc" // lalr1.cc:856 break; case 291: -#line 2344 "seclang-parser.yy" // lalr1.cc:856 +#line 2348 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessor()); } -#line 4058 "seclang-parser.cc" // lalr1.cc:856 +#line 4062 "seclang-parser.cc" // lalr1.cc:856 break; case 292: -#line 2348 "seclang-parser.yy" // lalr1.cc:856 +#line 2352 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorError()); } -#line 4066 "seclang-parser.cc" // lalr1.cc:856 +#line 4070 "seclang-parser.cc" // lalr1.cc:856 break; case 293: -#line 2352 "seclang-parser.yy" // lalr1.cc:856 +#line 2356 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorErrorMsg()); } -#line 4074 "seclang-parser.cc" // lalr1.cc:856 +#line 4078 "seclang-parser.cc" // lalr1.cc:856 break; case 294: -#line 2356 "seclang-parser.yy" // lalr1.cc:856 +#line 2360 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBasename()); } -#line 4082 "seclang-parser.cc" // lalr1.cc:856 +#line 4086 "seclang-parser.cc" // lalr1.cc:856 break; case 295: -#line 2360 "seclang-parser.yy" // lalr1.cc:856 +#line 2364 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBody()); } -#line 4090 "seclang-parser.cc" // lalr1.cc:856 +#line 4094 "seclang-parser.cc" // lalr1.cc:856 break; case 296: -#line 2364 "seclang-parser.yy" // lalr1.cc:856 +#line 2368 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBodyLength()); } -#line 4098 "seclang-parser.cc" // lalr1.cc:856 +#line 4102 "seclang-parser.cc" // lalr1.cc:856 break; case 297: -#line 2368 "seclang-parser.yy" // lalr1.cc:856 +#line 2372 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestFilename()); } -#line 4106 "seclang-parser.cc" // lalr1.cc:856 +#line 4110 "seclang-parser.cc" // lalr1.cc:856 break; case 298: -#line 2372 "seclang-parser.yy" // lalr1.cc:856 +#line 2376 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestLine()); } -#line 4114 "seclang-parser.cc" // lalr1.cc:856 +#line 4118 "seclang-parser.cc" // lalr1.cc:856 break; case 299: -#line 2376 "seclang-parser.yy" // lalr1.cc:856 +#line 2380 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestMethod()); } -#line 4122 "seclang-parser.cc" // lalr1.cc:856 +#line 4126 "seclang-parser.cc" // lalr1.cc:856 break; case 300: -#line 2380 "seclang-parser.yy" // lalr1.cc:856 +#line 2384 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestProtocol()); } -#line 4130 "seclang-parser.cc" // lalr1.cc:856 +#line 4134 "seclang-parser.cc" // lalr1.cc:856 break; case 301: -#line 2384 "seclang-parser.yy" // lalr1.cc:856 +#line 2388 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestURI()); } -#line 4138 "seclang-parser.cc" // lalr1.cc:856 +#line 4142 "seclang-parser.cc" // lalr1.cc:856 break; case 302: -#line 2388 "seclang-parser.yy" // lalr1.cc:856 +#line 2392 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestURIRaw()); } -#line 4146 "seclang-parser.cc" // lalr1.cc:856 +#line 4150 "seclang-parser.cc" // lalr1.cc:856 break; case 303: -#line 2392 "seclang-parser.yy" // lalr1.cc:856 +#line 2396 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseBody()); } -#line 4154 "seclang-parser.cc" // lalr1.cc:856 +#line 4158 "seclang-parser.cc" // lalr1.cc:856 break; case 304: -#line 2396 "seclang-parser.yy" // lalr1.cc:856 +#line 2400 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentLength()); } -#line 4162 "seclang-parser.cc" // lalr1.cc:856 +#line 4166 "seclang-parser.cc" // lalr1.cc:856 break; case 305: -#line 2400 "seclang-parser.yy" // lalr1.cc:856 +#line 2404 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseProtocol()); } -#line 4170 "seclang-parser.cc" // lalr1.cc:856 +#line 4174 "seclang-parser.cc" // lalr1.cc:856 break; case 306: -#line 2404 "seclang-parser.yy" // lalr1.cc:856 +#line 2408 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseStatus()); } -#line 4178 "seclang-parser.cc" // lalr1.cc:856 +#line 4182 "seclang-parser.cc" // lalr1.cc:856 break; case 307: -#line 2408 "seclang-parser.yy" // lalr1.cc:856 +#line 2412 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerAddr()); } -#line 4186 "seclang-parser.cc" // lalr1.cc:856 +#line 4190 "seclang-parser.cc" // lalr1.cc:856 break; case 308: -#line 2412 "seclang-parser.yy" // lalr1.cc:856 +#line 2416 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerName()); } -#line 4194 "seclang-parser.cc" // lalr1.cc:856 +#line 4198 "seclang-parser.cc" // lalr1.cc:856 break; case 309: -#line 2416 "seclang-parser.yy" // lalr1.cc:856 +#line 2420 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ServerPort()); } -#line 4202 "seclang-parser.cc" // lalr1.cc:856 +#line 4206 "seclang-parser.cc" // lalr1.cc:856 break; case 310: -#line 2420 "seclang-parser.yy" // lalr1.cc:856 +#line 2424 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::SessionID()); } -#line 4210 "seclang-parser.cc" // lalr1.cc:856 +#line 4214 "seclang-parser.cc" // lalr1.cc:856 break; case 311: -#line 2424 "seclang-parser.yy" // lalr1.cc:856 +#line 2428 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UniqueID()); } -#line 4218 "seclang-parser.cc" // lalr1.cc:856 +#line 4222 "seclang-parser.cc" // lalr1.cc:856 break; case 312: -#line 2428 "seclang-parser.yy" // lalr1.cc:856 +#line 2432 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UrlEncodedError()); } -#line 4226 "seclang-parser.cc" // lalr1.cc:856 +#line 4230 "seclang-parser.cc" // lalr1.cc:856 break; case 313: -#line 2432 "seclang-parser.yy" // lalr1.cc:856 +#line 2436 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::UserID()); } -#line 4234 "seclang-parser.cc" // lalr1.cc:856 +#line 4238 "seclang-parser.cc" // lalr1.cc:856 break; case 314: -#line 2436 "seclang-parser.yy" // lalr1.cc:856 - { - VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); - } -#line 4242 "seclang-parser.cc" // lalr1.cc:856 - break; - - case 315: #line 2440 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); } -#line 4250 "seclang-parser.cc" // lalr1.cc:856 +#line 4246 "seclang-parser.cc" // lalr1.cc:856 + break; + + case 315: +#line 2444 "seclang-parser.yy" // lalr1.cc:856 + { + VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Status()); + } +#line 4254 "seclang-parser.cc" // lalr1.cc:856 break; case 316: -#line 2444 "seclang-parser.yy" // lalr1.cc:856 +#line 2448 "seclang-parser.yy" // lalr1.cc:856 { VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::WebAppId()); } -#line 4258 "seclang-parser.cc" // lalr1.cc:856 +#line 4262 "seclang-parser.cc" // lalr1.cc:856 break; case 317: -#line 2448 "seclang-parser.yy" // lalr1.cc:856 +#line 2452 "seclang-parser.yy" // lalr1.cc:856 { 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 4269 "seclang-parser.cc" // lalr1.cc:856 +#line 4273 "seclang-parser.cc" // lalr1.cc:856 break; case 318: -#line 2456 "seclang-parser.yy" // lalr1.cc:856 +#line 2460 "seclang-parser.yy" // lalr1.cc:856 { 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 4280 "seclang-parser.cc" // lalr1.cc:856 +#line 4284 "seclang-parser.cc" // lalr1.cc:856 break; case 319: -#line 2463 "seclang-parser.yy" // lalr1.cc:856 +#line 2467 "seclang-parser.yy" // lalr1.cc:856 { 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 4291 "seclang-parser.cc" // lalr1.cc:856 +#line 4295 "seclang-parser.cc" // lalr1.cc:856 break; case 320: -#line 2470 "seclang-parser.yy" // lalr1.cc:856 +#line 2474 "seclang-parser.yy" // lalr1.cc:856 { 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 4302 "seclang-parser.cc" // lalr1.cc:856 +#line 4306 "seclang-parser.cc" // lalr1.cc:856 break; case 321: -#line 2477 "seclang-parser.yy" // lalr1.cc:856 +#line 2481 "seclang-parser.yy" // lalr1.cc:856 { 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 4313 "seclang-parser.cc" // lalr1.cc:856 +#line 4317 "seclang-parser.cc" // lalr1.cc:856 break; case 322: -#line 2484 "seclang-parser.yy" // lalr1.cc:856 +#line 2488 "seclang-parser.yy" // lalr1.cc:856 { 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 4324 "seclang-parser.cc" // lalr1.cc:856 +#line 4328 "seclang-parser.cc" // lalr1.cc:856 break; case 323: -#line 2491 "seclang-parser.yy" // lalr1.cc:856 +#line 2495 "seclang-parser.yy" // lalr1.cc:856 { 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 4335 "seclang-parser.cc" // lalr1.cc:856 +#line 4339 "seclang-parser.cc" // lalr1.cc:856 break; case 324: -#line 2498 "seclang-parser.yy" // lalr1.cc:856 +#line 2502 "seclang-parser.yy" // lalr1.cc:856 { 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 4346 "seclang-parser.cc" // lalr1.cc:856 +#line 4350 "seclang-parser.cc" // lalr1.cc:856 break; case 325: -#line 2505 "seclang-parser.yy" // lalr1.cc:856 +#line 2509 "seclang-parser.yy" // lalr1.cc:856 { 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 4357 "seclang-parser.cc" // lalr1.cc:856 +#line 4361 "seclang-parser.cc" // lalr1.cc:856 break; case 326: -#line 2512 "seclang-parser.yy" // lalr1.cc:856 +#line 2516 "seclang-parser.yy" // lalr1.cc:856 { 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 4368 "seclang-parser.cc" // lalr1.cc:856 +#line 4372 "seclang-parser.cc" // lalr1.cc:856 break; case 327: -#line 2519 "seclang-parser.yy" // lalr1.cc:856 +#line 2523 "seclang-parser.yy" // lalr1.cc:856 { 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 4379 "seclang-parser.cc" // lalr1.cc:856 +#line 4383 "seclang-parser.cc" // lalr1.cc:856 break; case 328: -#line 2526 "seclang-parser.yy" // lalr1.cc:856 +#line 2530 "seclang-parser.yy" // lalr1.cc:856 { 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 4390 "seclang-parser.cc" // lalr1.cc:856 +#line 4394 "seclang-parser.cc" // lalr1.cc:856 break; case 329: -#line 2533 "seclang-parser.yy" // lalr1.cc:856 +#line 2537 "seclang-parser.yy" // lalr1.cc:856 { 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 4401 "seclang-parser.cc" // lalr1.cc:856 +#line 4405 "seclang-parser.cc" // lalr1.cc:856 break; case 330: -#line 2543 "seclang-parser.yy" // lalr1.cc:856 +#line 2547 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Accuracy(yystack_[0].value.as< std::string > ())); } -#line 4409 "seclang-parser.cc" // lalr1.cc:856 +#line 4413 "seclang-parser.cc" // lalr1.cc:856 break; case 331: -#line 2547 "seclang-parser.yy" // lalr1.cc:856 +#line 2551 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Allow(yystack_[0].value.as< std::string > ())); } -#line 4417 "seclang-parser.cc" // lalr1.cc:856 +#line 4421 "seclang-parser.cc" // lalr1.cc:856 break; case 332: -#line 2551 "seclang-parser.yy" // lalr1.cc:856 +#line 2555 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("Append", yystack_[1].location); } -#line 4425 "seclang-parser.cc" // lalr1.cc:856 +#line 4429 "seclang-parser.cc" // lalr1.cc:856 break; case 333: -#line 2555 "seclang-parser.yy" // lalr1.cc:856 +#line 2559 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::AuditLog(yystack_[0].value.as< std::string > ())); } -#line 4433 "seclang-parser.cc" // lalr1.cc:856 +#line 4437 "seclang-parser.cc" // lalr1.cc:856 break; case 334: -#line 2559 "seclang-parser.yy" // lalr1.cc:856 +#line 2563 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Block(yystack_[0].value.as< std::string > ())); } -#line 4441 "seclang-parser.cc" // lalr1.cc:856 +#line 4445 "seclang-parser.cc" // lalr1.cc:856 break; case 335: -#line 2563 "seclang-parser.yy" // lalr1.cc:856 +#line 2567 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Capture(yystack_[0].value.as< std::string > ())); } -#line 4449 "seclang-parser.cc" // lalr1.cc:856 +#line 4453 "seclang-parser.cc" // lalr1.cc:856 break; case 336: -#line 2567 "seclang-parser.yy" // lalr1.cc:856 +#line 2571 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Chain(yystack_[0].value.as< std::string > ())); } -#line 4457 "seclang-parser.cc" // lalr1.cc:856 +#line 4461 "seclang-parser.cc" // lalr1.cc:856 break; case 337: -#line 2571 "seclang-parser.yy" // lalr1.cc:856 +#line 2575 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4466 "seclang-parser.cc" // lalr1.cc:856 +#line 4470 "seclang-parser.cc" // lalr1.cc:856 break; case 338: -#line 2576 "seclang-parser.yy" // lalr1.cc:856 +#line 2580 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4475 "seclang-parser.cc" // lalr1.cc:856 +#line 4479 "seclang-parser.cc" // lalr1.cc:856 break; case 339: -#line 2581 "seclang-parser.yy" // lalr1.cc:856 +#line 2585 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("CtlAuditEngine", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4484 "seclang-parser.cc" // lalr1.cc:856 +#line 4488 "seclang-parser.cc" // lalr1.cc:856 break; case 340: -#line 2586 "seclang-parser.yy" // lalr1.cc:856 +#line 2590 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::AuditLogParts(yystack_[0].value.as< std::string > ())); } -#line 4492 "seclang-parser.cc" // lalr1.cc:856 +#line 4496 "seclang-parser.cc" // lalr1.cc:856 break; case 341: -#line 2590 "seclang-parser.yy" // lalr1.cc:856 +#line 2594 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorJSON(yystack_[0].value.as< std::string > ())); } -#line 4500 "seclang-parser.cc" // lalr1.cc:856 +#line 4504 "seclang-parser.cc" // lalr1.cc:856 break; case 342: -#line 2594 "seclang-parser.yy" // lalr1.cc:856 +#line 2598 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorXML(yystack_[0].value.as< std::string > ())); } -#line 4508 "seclang-parser.cc" // lalr1.cc:856 +#line 4512 "seclang-parser.cc" // lalr1.cc:856 break; case 343: -#line 2598 "seclang-parser.yy" // lalr1.cc:856 +#line 2602 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyProcessorURLENCODED(yystack_[0].value.as< std::string > ())); } -#line 4516 "seclang-parser.cc" // lalr1.cc:856 +#line 4520 "seclang-parser.cc" // lalr1.cc:856 break; case 344: -#line 2602 "seclang-parser.yy" // lalr1.cc:856 +#line 2606 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4525 "seclang-parser.cc" // lalr1.cc:856 +#line 4529 "seclang-parser.cc" // lalr1.cc:856 break; case 345: -#line 2607 "seclang-parser.yy" // lalr1.cc:856 +#line 2611 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("CtlForceReequestBody", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[1].value.as< std::string > ())); } -#line 4534 "seclang-parser.cc" // lalr1.cc:856 +#line 4538 "seclang-parser.cc" // lalr1.cc:856 break; case 346: -#line 2612 "seclang-parser.yy" // lalr1.cc:856 +#line 2616 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "true")); } -#line 4542 "seclang-parser.cc" // lalr1.cc:856 +#line 4546 "seclang-parser.cc" // lalr1.cc:856 break; case 347: -#line 2616 "seclang-parser.yy" // lalr1.cc:856 +#line 2620 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RequestBodyAccess(yystack_[1].value.as< std::string > () + "false")); } -#line 4550 "seclang-parser.cc" // lalr1.cc:856 +#line 4554 "seclang-parser.cc" // lalr1.cc:856 break; case 348: -#line 2620 "seclang-parser.yy" // lalr1.cc:856 +#line 2624 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=on")); } -#line 4558 "seclang-parser.cc" // lalr1.cc:856 +#line 4562 "seclang-parser.cc" // lalr1.cc:856 break; case 349: -#line 2624 "seclang-parser.yy" // lalr1.cc:856 +#line 2628 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=off")); } -#line 4566 "seclang-parser.cc" // lalr1.cc:856 +#line 4570 "seclang-parser.cc" // lalr1.cc:856 break; case 350: -#line 2628 "seclang-parser.yy" // lalr1.cc:856 +#line 2632 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleEngine("ctl:RuleEngine=detectiononly")); } -#line 4574 "seclang-parser.cc" // lalr1.cc:856 +#line 4578 "seclang-parser.cc" // lalr1.cc:856 break; case 351: -#line 2632 "seclang-parser.yy" // lalr1.cc:856 +#line 2636 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveById(yystack_[0].value.as< std::string > ())); } -#line 4582 "seclang-parser.cc" // lalr1.cc:856 +#line 4586 "seclang-parser.cc" // lalr1.cc:856 break; case 352: -#line 2636 "seclang-parser.yy" // lalr1.cc:856 +#line 2640 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveByTag(yystack_[0].value.as< std::string > ())); } -#line 4590 "seclang-parser.cc" // lalr1.cc:856 +#line 4594 "seclang-parser.cc" // lalr1.cc:856 break; case 353: -#line 2640 "seclang-parser.yy" // lalr1.cc:856 +#line 2644 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetById(yystack_[0].value.as< std::string > ())); } -#line 4598 "seclang-parser.cc" // lalr1.cc:856 +#line 4602 "seclang-parser.cc" // lalr1.cc:856 break; case 354: -#line 2644 "seclang-parser.yy" // lalr1.cc:856 +#line 2648 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::ctl::RuleRemoveTargetByTag(yystack_[0].value.as< std::string > ())); } -#line 4606 "seclang-parser.cc" // lalr1.cc:856 +#line 4610 "seclang-parser.cc" // lalr1.cc:856 break; case 355: -#line 2648 "seclang-parser.yy" // lalr1.cc:856 +#line 2652 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Deny(yystack_[0].value.as< std::string > ())); } -#line 4614 "seclang-parser.cc" // lalr1.cc:856 +#line 4618 "seclang-parser.cc" // lalr1.cc:856 break; case 356: -#line 2652 "seclang-parser.yy" // lalr1.cc:856 +#line 2656 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("DeprecateVar", yystack_[1].location); } -#line 4622 "seclang-parser.cc" // lalr1.cc:856 +#line 4626 "seclang-parser.cc" // lalr1.cc:856 break; case 357: -#line 2656 "seclang-parser.yy" // lalr1.cc:856 +#line 2660 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("Drop", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); } -#line 4631 "seclang-parser.cc" // lalr1.cc:856 +#line 4635 "seclang-parser.cc" // lalr1.cc:856 break; case 358: -#line 2661 "seclang-parser.yy" // lalr1.cc:856 +#line 2665 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Exec(yystack_[0].value.as< std::string > ())); } -#line 4639 "seclang-parser.cc" // lalr1.cc:856 +#line 4643 "seclang-parser.cc" // lalr1.cc:856 break; case 359: -#line 2665 "seclang-parser.yy" // lalr1.cc:856 +#line 2669 "seclang-parser.yy" // lalr1.cc:856 { //ACTION_NOT_SUPPORTED("ExpireVar", @0); ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Action(yystack_[0].value.as< std::string > ())); } -#line 4648 "seclang-parser.cc" // lalr1.cc:856 +#line 4652 "seclang-parser.cc" // lalr1.cc:856 break; case 360: -#line 2670 "seclang-parser.yy" // lalr1.cc:856 +#line 2674 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::RuleId(yystack_[0].value.as< std::string > ())); } -#line 4656 "seclang-parser.cc" // lalr1.cc:856 +#line 4660 "seclang-parser.cc" // lalr1.cc:856 break; case 361: -#line 2674 "seclang-parser.yy" // lalr1.cc:856 +#line 2678 "seclang-parser.yy" // lalr1.cc:856 { 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 4664 "seclang-parser.cc" // lalr1.cc:856 +#line 4668 "seclang-parser.cc" // lalr1.cc:856 break; case 362: -#line 2678 "seclang-parser.yy" // lalr1.cc:856 +#line 2682 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::LogData(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4672 "seclang-parser.cc" // lalr1.cc:856 +#line 4676 "seclang-parser.cc" // lalr1.cc:856 break; case 363: -#line 2682 "seclang-parser.yy" // lalr1.cc:856 +#line 2686 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Log(yystack_[0].value.as< std::string > ())); } -#line 4680 "seclang-parser.cc" // lalr1.cc:856 +#line 4684 "seclang-parser.cc" // lalr1.cc:856 break; case 364: -#line 2686 "seclang-parser.yy" // lalr1.cc:856 +#line 2690 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Maturity(yystack_[0].value.as< std::string > ())); } -#line 4688 "seclang-parser.cc" // lalr1.cc:856 +#line 4692 "seclang-parser.cc" // lalr1.cc:856 break; case 365: -#line 2690 "seclang-parser.yy" // lalr1.cc:856 +#line 2694 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Msg(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4696 "seclang-parser.cc" // lalr1.cc:856 +#line 4700 "seclang-parser.cc" // lalr1.cc:856 break; case 366: -#line 2694 "seclang-parser.yy" // lalr1.cc:856 +#line 2698 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::MultiMatch(yystack_[0].value.as< std::string > ())); } -#line 4704 "seclang-parser.cc" // lalr1.cc:856 +#line 4708 "seclang-parser.cc" // lalr1.cc:856 break; case 367: -#line 2698 "seclang-parser.yy" // lalr1.cc:856 +#line 2702 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoAuditLog(yystack_[0].value.as< std::string > ())); } -#line 4712 "seclang-parser.cc" // lalr1.cc:856 +#line 4716 "seclang-parser.cc" // lalr1.cc:856 break; case 368: -#line 2702 "seclang-parser.yy" // lalr1.cc:856 +#line 2706 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::NoLog(yystack_[0].value.as< std::string > ())); } -#line 4720 "seclang-parser.cc" // lalr1.cc:856 +#line 4724 "seclang-parser.cc" // lalr1.cc:856 break; case 369: -#line 2706 "seclang-parser.yy" // lalr1.cc:856 +#line 2710 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Pass(yystack_[0].value.as< std::string > ())); } -#line 4728 "seclang-parser.cc" // lalr1.cc:856 +#line 4732 "seclang-parser.cc" // lalr1.cc:856 break; case 370: -#line 2710 "seclang-parser.yy" // lalr1.cc:856 +#line 2714 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("Pause", yystack_[1].location); } -#line 4736 "seclang-parser.cc" // lalr1.cc:856 +#line 4740 "seclang-parser.cc" // lalr1.cc:856 break; case 371: -#line 2714 "seclang-parser.yy" // lalr1.cc:856 +#line 2718 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Phase(yystack_[0].value.as< std::string > ())); } -#line 4744 "seclang-parser.cc" // lalr1.cc:856 +#line 4748 "seclang-parser.cc" // lalr1.cc:856 break; case 372: -#line 2718 "seclang-parser.yy" // lalr1.cc:856 +#line 2722 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("Prepend", yystack_[1].location); } -#line 4752 "seclang-parser.cc" // lalr1.cc:856 +#line 4756 "seclang-parser.cc" // lalr1.cc:856 break; case 373: -#line 2722 "seclang-parser.yy" // lalr1.cc:856 +#line 2726 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("Proxy", yystack_[1].location); } -#line 4760 "seclang-parser.cc" // lalr1.cc:856 +#line 4764 "seclang-parser.cc" // lalr1.cc:856 break; case 374: -#line 2726 "seclang-parser.yy" // lalr1.cc:856 +#line 2730 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::disruptive::Redirect(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4768 "seclang-parser.cc" // lalr1.cc:856 +#line 4772 "seclang-parser.cc" // lalr1.cc:856 break; case 375: -#line 2730 "seclang-parser.yy" // lalr1.cc:856 +#line 2734 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Rev(yystack_[0].value.as< std::string > ())); } -#line 4776 "seclang-parser.cc" // lalr1.cc:856 +#line 4780 "seclang-parser.cc" // lalr1.cc:856 break; case 376: -#line 2734 "seclang-parser.yy" // lalr1.cc:856 +#line 2738 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("SanitiseArg", yystack_[1].location); } -#line 4784 "seclang-parser.cc" // lalr1.cc:856 +#line 4788 "seclang-parser.cc" // lalr1.cc:856 break; case 377: -#line 2738 "seclang-parser.yy" // lalr1.cc:856 +#line 2742 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("SanitiseMatched", yystack_[1].location); } -#line 4792 "seclang-parser.cc" // lalr1.cc:856 +#line 4796 "seclang-parser.cc" // lalr1.cc:856 break; case 378: -#line 2742 "seclang-parser.yy" // lalr1.cc:856 +#line 2746 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("SanitiseMatchedBytes", yystack_[1].location); } -#line 4800 "seclang-parser.cc" // lalr1.cc:856 +#line 4804 "seclang-parser.cc" // lalr1.cc:856 break; case 379: -#line 2746 "seclang-parser.yy" // lalr1.cc:856 +#line 2750 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("SanitiseRequestHeader", yystack_[1].location); } -#line 4808 "seclang-parser.cc" // lalr1.cc:856 +#line 4812 "seclang-parser.cc" // lalr1.cc:856 break; case 380: -#line 2750 "seclang-parser.yy" // lalr1.cc:856 +#line 2754 "seclang-parser.yy" // lalr1.cc:856 { ACTION_NOT_SUPPORTED("SanitiseResponseHeader", yystack_[1].location); } -#line 4816 "seclang-parser.cc" // lalr1.cc:856 +#line 4820 "seclang-parser.cc" // lalr1.cc:856 break; case 381: -#line 2754 "seclang-parser.yy" // lalr1.cc:856 +#line 2758 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetENV(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4824 "seclang-parser.cc" // lalr1.cc:856 +#line 4828 "seclang-parser.cc" // lalr1.cc:856 break; case 382: -#line 2758 "seclang-parser.yy" // lalr1.cc:856 +#line 2762 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetRSC(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4832 "seclang-parser.cc" // lalr1.cc:856 +#line 4836 "seclang-parser.cc" // lalr1.cc:856 break; case 383: -#line 2762 "seclang-parser.yy" // lalr1.cc:856 +#line 2766 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetSID(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4840 "seclang-parser.cc" // lalr1.cc:856 +#line 4844 "seclang-parser.cc" // lalr1.cc:856 break; case 384: -#line 2766 "seclang-parser.yy" // lalr1.cc:856 +#line 2770 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetUID(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4848 "seclang-parser.cc" // lalr1.cc:856 +#line 4852 "seclang-parser.cc" // lalr1.cc:856 break; case 385: -#line 2770 "seclang-parser.yy" // lalr1.cc:856 +#line 2774 "seclang-parser.yy" // lalr1.cc:856 { yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ()); } -#line 4856 "seclang-parser.cc" // lalr1.cc:856 +#line 4860 "seclang-parser.cc" // lalr1.cc:856 break; case 386: -#line 2774 "seclang-parser.yy" // lalr1.cc:856 +#line 2778 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Severity(yystack_[0].value.as< std::string > ())); } -#line 4864 "seclang-parser.cc" // lalr1.cc:856 +#line 4868 "seclang-parser.cc" // lalr1.cc:856 break; case 387: -#line 2778 "seclang-parser.yy" // lalr1.cc:856 +#line 2782 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Skip(yystack_[0].value.as< std::string > ())); } -#line 4872 "seclang-parser.cc" // lalr1.cc:856 +#line 4876 "seclang-parser.cc" // lalr1.cc:856 break; case 388: -#line 2782 "seclang-parser.yy" // lalr1.cc:856 +#line 2786 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SkipAfter(yystack_[0].value.as< std::string > ())); } -#line 4880 "seclang-parser.cc" // lalr1.cc:856 +#line 4884 "seclang-parser.cc" // lalr1.cc:856 break; case 389: -#line 2786 "seclang-parser.yy" // lalr1.cc:856 +#line 2790 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::data::Status(yystack_[0].value.as< std::string > ())); } -#line 4888 "seclang-parser.cc" // lalr1.cc:856 +#line 4892 "seclang-parser.cc" // lalr1.cc:856 break; case 390: -#line 2790 "seclang-parser.yy" // lalr1.cc:856 +#line 2794 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Tag(std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 4896 "seclang-parser.cc" // lalr1.cc:856 +#line 4900 "seclang-parser.cc" // lalr1.cc:856 break; case 391: -#line 2794 "seclang-parser.yy" // lalr1.cc:856 +#line 2798 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::Ver(yystack_[0].value.as< std::string > ())); } -#line 4904 "seclang-parser.cc" // lalr1.cc:856 +#line 4908 "seclang-parser.cc" // lalr1.cc:856 break; case 392: -#line 2798 "seclang-parser.yy" // lalr1.cc:856 +#line 2802 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::XmlNS(yystack_[0].value.as< std::string > ())); } -#line 4912 "seclang-parser.cc" // lalr1.cc:856 +#line 4916 "seclang-parser.cc" // lalr1.cc:856 break; case 393: -#line 2802 "seclang-parser.yy" // lalr1.cc:856 +#line 2806 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityZero7bit(yystack_[0].value.as< std::string > ())); } -#line 4920 "seclang-parser.cc" // lalr1.cc:856 +#line 4924 "seclang-parser.cc" // lalr1.cc:856 break; case 394: -#line 2806 "seclang-parser.yy" // lalr1.cc:856 +#line 2810 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityOdd7bit(yystack_[0].value.as< std::string > ())); } -#line 4928 "seclang-parser.cc" // lalr1.cc:856 +#line 4932 "seclang-parser.cc" // lalr1.cc:856 break; case 395: -#line 2810 "seclang-parser.yy" // lalr1.cc:856 +#line 2814 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ParityEven7bit(yystack_[0].value.as< std::string > ())); } -#line 4936 "seclang-parser.cc" // lalr1.cc:856 +#line 4940 "seclang-parser.cc" // lalr1.cc:856 break; case 396: -#line 2814 "seclang-parser.yy" // lalr1.cc:856 +#line 2818 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::SqlHexDecode(yystack_[0].value.as< std::string > ())); } -#line 4944 "seclang-parser.cc" // lalr1.cc:856 +#line 4948 "seclang-parser.cc" // lalr1.cc:856 break; case 397: -#line 2818 "seclang-parser.yy" // lalr1.cc:856 +#line 2822 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64Encode(yystack_[0].value.as< std::string > ())); } -#line 4952 "seclang-parser.cc" // lalr1.cc:856 +#line 4956 "seclang-parser.cc" // lalr1.cc:856 break; case 398: -#line 2822 "seclang-parser.yy" // lalr1.cc:856 +#line 2826 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64Decode(yystack_[0].value.as< std::string > ())); } -#line 4960 "seclang-parser.cc" // lalr1.cc:856 +#line 4964 "seclang-parser.cc" // lalr1.cc:856 break; case 399: -#line 2826 "seclang-parser.yy" // lalr1.cc:856 +#line 2830 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Base64DecodeExt(yystack_[0].value.as< std::string > ())); } -#line 4968 "seclang-parser.cc" // lalr1.cc:856 +#line 4972 "seclang-parser.cc" // lalr1.cc:856 break; case 400: -#line 2830 "seclang-parser.yy" // lalr1.cc:856 +#line 2834 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CmdLine(yystack_[0].value.as< std::string > ())); } -#line 4976 "seclang-parser.cc" // lalr1.cc:856 +#line 4980 "seclang-parser.cc" // lalr1.cc:856 break; case 401: -#line 2834 "seclang-parser.yy" // lalr1.cc:856 +#line 2838 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Sha1(yystack_[0].value.as< std::string > ())); } -#line 4984 "seclang-parser.cc" // lalr1.cc:856 +#line 4988 "seclang-parser.cc" // lalr1.cc:856 break; case 402: -#line 2838 "seclang-parser.yy" // lalr1.cc:856 +#line 2842 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Md5(yystack_[0].value.as< std::string > ())); } -#line 4992 "seclang-parser.cc" // lalr1.cc:856 +#line 4996 "seclang-parser.cc" // lalr1.cc:856 break; case 403: -#line 2842 "seclang-parser.yy" // lalr1.cc:856 +#line 2846 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::EscapeSeqDecode(yystack_[0].value.as< std::string > ())); } -#line 5000 "seclang-parser.cc" // lalr1.cc:856 +#line 5004 "seclang-parser.cc" // lalr1.cc:856 break; case 404: -#line 2846 "seclang-parser.yy" // lalr1.cc:856 +#line 2850 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexEncode(yystack_[0].value.as< std::string > ())); } -#line 5008 "seclang-parser.cc" // lalr1.cc:856 +#line 5012 "seclang-parser.cc" // lalr1.cc:856 break; case 405: -#line 2850 "seclang-parser.yy" // lalr1.cc:856 +#line 2854 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HexDecode(yystack_[0].value.as< std::string > ())); } -#line 5016 "seclang-parser.cc" // lalr1.cc:856 +#line 5020 "seclang-parser.cc" // lalr1.cc:856 break; case 406: -#line 2854 "seclang-parser.yy" // lalr1.cc:856 +#line 2858 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::LowerCase(yystack_[0].value.as< std::string > ())); } -#line 5024 "seclang-parser.cc" // lalr1.cc:856 +#line 5028 "seclang-parser.cc" // lalr1.cc:856 break; case 407: -#line 2858 "seclang-parser.yy" // lalr1.cc:856 +#line 2862 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UpperCase(yystack_[0].value.as< std::string > ())); } -#line 5032 "seclang-parser.cc" // lalr1.cc:856 +#line 5036 "seclang-parser.cc" // lalr1.cc:856 break; case 408: -#line 2862 "seclang-parser.yy" // lalr1.cc:856 +#line 2866 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecodeUni(yystack_[0].value.as< std::string > ())); } -#line 5040 "seclang-parser.cc" // lalr1.cc:856 +#line 5044 "seclang-parser.cc" // lalr1.cc:856 break; case 409: -#line 2866 "seclang-parser.yy" // lalr1.cc:856 +#line 2870 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlDecode(yystack_[0].value.as< std::string > ())); } -#line 5048 "seclang-parser.cc" // lalr1.cc:856 +#line 5052 "seclang-parser.cc" // lalr1.cc:856 break; case 410: -#line 2870 "seclang-parser.yy" // lalr1.cc:856 +#line 2874 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::UrlEncode(yystack_[0].value.as< std::string > ())); } -#line 5056 "seclang-parser.cc" // lalr1.cc:856 +#line 5060 "seclang-parser.cc" // lalr1.cc:856 break; case 411: -#line 2874 "seclang-parser.yy" // lalr1.cc:856 +#line 2878 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::None(yystack_[0].value.as< std::string > ())); } -#line 5064 "seclang-parser.cc" // lalr1.cc:856 +#line 5068 "seclang-parser.cc" // lalr1.cc:856 break; case 412: -#line 2878 "seclang-parser.yy" // lalr1.cc:856 +#line 2882 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CompressWhitespace(yystack_[0].value.as< std::string > ())); } -#line 5072 "seclang-parser.cc" // lalr1.cc:856 +#line 5076 "seclang-parser.cc" // lalr1.cc:856 break; case 413: -#line 2882 "seclang-parser.yy" // lalr1.cc:856 +#line 2886 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveWhitespace(yystack_[0].value.as< std::string > ())); } -#line 5080 "seclang-parser.cc" // lalr1.cc:856 +#line 5084 "seclang-parser.cc" // lalr1.cc:856 break; case 414: -#line 2886 "seclang-parser.yy" // lalr1.cc:856 +#line 2890 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceNulls(yystack_[0].value.as< std::string > ())); } -#line 5088 "seclang-parser.cc" // lalr1.cc:856 +#line 5092 "seclang-parser.cc" // lalr1.cc:856 break; case 415: -#line 2890 "seclang-parser.yy" // lalr1.cc:856 +#line 2894 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveNulls(yystack_[0].value.as< std::string > ())); } -#line 5096 "seclang-parser.cc" // lalr1.cc:856 +#line 5100 "seclang-parser.cc" // lalr1.cc:856 break; case 416: -#line 2894 "seclang-parser.yy" // lalr1.cc:856 +#line 2898 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::HtmlEntityDecode(yystack_[0].value.as< std::string > ())); } -#line 5104 "seclang-parser.cc" // lalr1.cc:856 +#line 5108 "seclang-parser.cc" // lalr1.cc:856 break; case 417: -#line 2898 "seclang-parser.yy" // lalr1.cc:856 +#line 2902 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::JsDecode(yystack_[0].value.as< std::string > ())); } -#line 5112 "seclang-parser.cc" // lalr1.cc:856 +#line 5116 "seclang-parser.cc" // lalr1.cc:856 break; case 418: -#line 2902 "seclang-parser.yy" // lalr1.cc:856 +#line 2906 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::CssDecode(yystack_[0].value.as< std::string > ())); } -#line 5120 "seclang-parser.cc" // lalr1.cc:856 +#line 5124 "seclang-parser.cc" // lalr1.cc:856 break; case 419: -#line 2906 "seclang-parser.yy" // lalr1.cc:856 +#line 2910 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Trim(yystack_[0].value.as< std::string > ())); } -#line 5128 "seclang-parser.cc" // lalr1.cc:856 +#line 5132 "seclang-parser.cc" // lalr1.cc:856 break; case 420: -#line 2910 "seclang-parser.yy" // lalr1.cc:856 +#line 2914 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::TrimLeft(yystack_[0].value.as< std::string > ())); } -#line 5136 "seclang-parser.cc" // lalr1.cc:856 +#line 5140 "seclang-parser.cc" // lalr1.cc:856 break; case 421: -#line 2914 "seclang-parser.yy" // lalr1.cc:856 +#line 2918 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::TrimRight(yystack_[0].value.as< std::string > ())); } -#line 5144 "seclang-parser.cc" // lalr1.cc:856 +#line 5148 "seclang-parser.cc" // lalr1.cc:856 break; case 422: -#line 2918 "seclang-parser.yy" // lalr1.cc:856 +#line 2922 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePathWin(yystack_[0].value.as< std::string > ())); } -#line 5152 "seclang-parser.cc" // lalr1.cc:856 +#line 5156 "seclang-parser.cc" // lalr1.cc:856 break; case 423: -#line 2922 "seclang-parser.yy" // lalr1.cc:856 +#line 2926 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::NormalisePath(yystack_[0].value.as< std::string > ())); } -#line 5160 "seclang-parser.cc" // lalr1.cc:856 +#line 5164 "seclang-parser.cc" // lalr1.cc:856 break; case 424: -#line 2926 "seclang-parser.yy" // lalr1.cc:856 +#line 2930 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Length(yystack_[0].value.as< std::string > ())); } -#line 5168 "seclang-parser.cc" // lalr1.cc:856 +#line 5172 "seclang-parser.cc" // lalr1.cc:856 break; case 425: -#line 2930 "seclang-parser.yy" // lalr1.cc:856 +#line 2934 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::Utf8ToUnicode(yystack_[0].value.as< std::string > ())); } -#line 5176 "seclang-parser.cc" // lalr1.cc:856 +#line 5180 "seclang-parser.cc" // lalr1.cc:856 break; case 426: -#line 2934 "seclang-parser.yy" // lalr1.cc:856 +#line 2938 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveCommentsChar(yystack_[0].value.as< std::string > ())); } -#line 5184 "seclang-parser.cc" // lalr1.cc:856 +#line 5188 "seclang-parser.cc" // lalr1.cc:856 break; case 427: -#line 2938 "seclang-parser.yy" // lalr1.cc:856 +#line 2942 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::RemoveComments(yystack_[0].value.as< std::string > ())); } -#line 5192 "seclang-parser.cc" // lalr1.cc:856 +#line 5196 "seclang-parser.cc" // lalr1.cc:856 break; case 428: -#line 2942 "seclang-parser.yy" // lalr1.cc:856 +#line 2946 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::transformations::ReplaceComments(yystack_[0].value.as< std::string > ())); } -#line 5200 "seclang-parser.cc" // lalr1.cc:856 +#line 5204 "seclang-parser.cc" // lalr1.cc:856 break; case 429: -#line 2949 "seclang-parser.yy" // lalr1.cc:856 +#line 2953 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::unsetOperation, std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5208 "seclang-parser.cc" // lalr1.cc:856 +#line 5212 "seclang-parser.cc" // lalr1.cc:856 break; case 430: -#line 2953 "seclang-parser.yy" // lalr1.cc:856 +#line 2957 "seclang-parser.yy" // lalr1.cc:856 { ACTION_CONTAINER(yylhs.value.as< std::unique_ptr > (), new actions::SetVar(actions::SetVarOperation::setToOneOperation, std::move(yystack_[0].value.as< std::unique_ptr > ()))); } -#line 5216 "seclang-parser.cc" // lalr1.cc:856 +#line 5220 "seclang-parser.cc" // lalr1.cc:856 break; case 431: -#line 2957 "seclang-parser.yy" // lalr1.cc:856 +#line 2961 "seclang-parser.yy" // lalr1.cc:856 { 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 5224 "seclang-parser.cc" // lalr1.cc:856 +#line 5228 "seclang-parser.cc" // lalr1.cc:856 break; case 432: -#line 2961 "seclang-parser.yy" // lalr1.cc:856 +#line 2965 "seclang-parser.yy" // lalr1.cc:856 { 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 5232 "seclang-parser.cc" // lalr1.cc:856 +#line 5236 "seclang-parser.cc" // lalr1.cc:856 break; case 433: -#line 2965 "seclang-parser.yy" // lalr1.cc:856 +#line 2969 "seclang-parser.yy" // lalr1.cc:856 { 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 5240 "seclang-parser.cc" // lalr1.cc:856 +#line 5244 "seclang-parser.cc" // lalr1.cc:856 break; case 434: -#line 2972 "seclang-parser.yy" // lalr1.cc:856 +#line 2976 "seclang-parser.yy" // lalr1.cc:856 { 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 5249 "seclang-parser.cc" // lalr1.cc:856 +#line 5253 "seclang-parser.cc" // lalr1.cc:856 break; case 435: -#line 2977 "seclang-parser.yy" // lalr1.cc:856 +#line 2981 "seclang-parser.yy" // lalr1.cc:856 { 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 5258 "seclang-parser.cc" // lalr1.cc:856 +#line 5262 "seclang-parser.cc" // lalr1.cc:856 break; case 436: -#line 2982 "seclang-parser.yy" // lalr1.cc:856 +#line 2986 "seclang-parser.yy" // lalr1.cc:856 { std::unique_ptr r(new RunTimeString()); r->appendText(yystack_[0].value.as< std::string > ()); yylhs.value.as< std::unique_ptr > () = std::move(r); } -#line 5268 "seclang-parser.cc" // lalr1.cc:856 +#line 5272 "seclang-parser.cc" // lalr1.cc:856 break; case 437: -#line 2988 "seclang-parser.yy" // lalr1.cc:856 +#line 2992 "seclang-parser.yy" // lalr1.cc:856 { 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 5278 "seclang-parser.cc" // lalr1.cc:856 +#line 5282 "seclang-parser.cc" // lalr1.cc:856 break; -#line 5282 "seclang-parser.cc" // lalr1.cc:856 +#line 5286 "seclang-parser.cc" // lalr1.cc:856 default: break; } @@ -6693,38 +6697,38 @@ namespace yy { 1288, 1293, 1298, 1303, 1308, 1311, 1316, 1319, 1324, 1329, 1332, 1337, 1342, 1347, 1352, 1357, 1362, 1367, 1370, 1375, 1380, 1385, 1390, 1393, 1398, 1403, 1408, 1421, 1434, 1447, - 1460, 1473, 1499, 1525, 1537, 1557, 1585, 1590, 1595, 1604, - 1609, 1613, 1617, 1621, 1625, 1629, 1633, 1638, 1643, 1655, - 1661, 1665, 1669, 1680, 1689, 1690, 1697, 1702, 1707, 1712, - 1719, 1727, 1764, 1768, 1775, 1780, 1786, 1792, 1798, 1805, - 1815, 1819, 1823, 1827, 1831, 1835, 1839, 1843, 1847, 1851, - 1855, 1859, 1863, 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, - 2176, 2180, 2184, 2189, 2193, 2197, 2202, 2207, 2211, 2215, - 2219, 2223, 2227, 2231, 2235, 2239, 2243, 2247, 2251, 2255, - 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, 2455, 2462, - 2469, 2476, 2483, 2490, 2497, 2504, 2511, 2518, 2525, 2532, - 2542, 2546, 2550, 2554, 2558, 2562, 2566, 2570, 2575, 2580, - 2585, 2589, 2593, 2597, 2601, 2606, 2611, 2615, 2619, 2623, - 2627, 2631, 2635, 2639, 2643, 2647, 2651, 2655, 2660, 2664, - 2669, 2673, 2677, 2681, 2685, 2689, 2693, 2697, 2701, 2705, - 2709, 2713, 2717, 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, 2948, - 2952, 2956, 2960, 2964, 2971, 2976, 2981, 2987 + 1460, 1473, 1499, 1529, 1541, 1561, 1589, 1594, 1599, 1608, + 1613, 1617, 1621, 1625, 1629, 1633, 1637, 1642, 1647, 1659, + 1665, 1669, 1673, 1684, 1693, 1694, 1701, 1706, 1711, 1716, + 1723, 1731, 1768, 1772, 1779, 1784, 1790, 1796, 1802, 1809, + 1819, 1823, 1827, 1831, 1835, 1839, 1843, 1847, 1851, 1855, + 1859, 1863, 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, + 2180, 2184, 2188, 2193, 2197, 2201, 2206, 2211, 2215, 2219, + 2223, 2227, 2231, 2235, 2239, 2243, 2247, 2251, 2255, 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, 2459, 2466, + 2473, 2480, 2487, 2494, 2501, 2508, 2515, 2522, 2529, 2536, + 2546, 2550, 2554, 2558, 2562, 2566, 2570, 2574, 2579, 2584, + 2589, 2593, 2597, 2601, 2605, 2610, 2615, 2619, 2623, 2627, + 2631, 2635, 2639, 2643, 2647, 2651, 2655, 2659, 2664, 2668, + 2673, 2677, 2681, 2685, 2689, 2693, 2697, 2701, 2705, 2709, + 2713, 2717, 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, 2952, + 2956, 2960, 2964, 2968, 2975, 2980, 2985, 2991 }; // Print the state stack on the debug stream. @@ -6759,8 +6763,8 @@ namespace yy { } // yy -#line 6763 "seclang-parser.cc" // lalr1.cc:1163 -#line 2994 "seclang-parser.yy" // lalr1.cc:1164 +#line 6767 "seclang-parser.cc" // lalr1.cc:1163 +#line 2998 "seclang-parser.yy" // lalr1.cc:1164 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 90cf5ac7..ffb1196c 100644 --- a/src/parser/seclang-parser.yy +++ b/src/parser/seclang-parser.yy @@ -1513,12 +1513,16 @@ expression: } - std::vector *a = new std::vector(); - for (auto &i : *$2.get()) { - a->push_back(i.release()); + if (driver.m_exceptions.loadUpdateActionById(ruleId, std::move($2), &error) == false) { + std::stringstream ss; + ss << "SecRuleUpdateActionById: failed to load:"; + ss << $1; + ss << ". "; + ss << error; + driver.error(@0, ss.str()); + YYERROR; } - driver.error(@0, "SecRuleUpdateActionById is not yet supported"); YYERROR; } /* Debug log: start */ diff --git a/src/rule.cc b/src/rule.cc index 5e32d807..aaa0c775 100644 --- a/src/rule.cc +++ b/src/rule.cc @@ -161,7 +161,7 @@ Rule::~Rule() { } } - +/* std::vector Rule::getActionNames() { std::vector a; for (auto &z : this->m_actionsRuntimePos) { @@ -173,10 +173,25 @@ std::vector Rule::getActionNames() { for (auto &z : this->m_actionsConf) { a.push_back(z->m_name); } - + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *z = dynamic_cast(b.second.get()); + a.push_back(z->m_name); + } + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *z = dynamic_cast(b.second.get()); + a.push_back(z->m_name); + } return a; } - +*/ bool Rule::evaluateActions(Transaction *trans) { return true; @@ -216,21 +231,21 @@ void Rule::updateRulesVariable(Transaction *trans) { trans->m_variableRule.set("rev", m_rev, 0); } - if (getActionsByName("msg").size() > 0) { + if (getActionsByName("msg", trans).size() > 0) { actions::Msg *msg = dynamic_cast( - getActionsByName("msg")[0]); + getActionsByName("msg", trans)[0]); trans->m_variableRule.set("msg", msg->data(trans), 0); } - if (getActionsByName("logdata").size() > 0) { + if (getActionsByName("logdata", trans).size() > 0) { actions::LogData *data = dynamic_cast( - getActionsByName("logdata")[0]); + getActionsByName("logdata", trans)[0]); trans->m_variableRule.set("logdata", data->data(trans), 0); } - if (getActionsByName("severity").size() > 0) { + if (getActionsByName("severity", trans).size() > 0) { actions::Severity *data = dynamic_cast( - getActionsByName("severity")[0]); + getActionsByName("severity", trans)[0]); trans->m_variableRule.set("severity", std::to_string(data->m_severity), 0); } @@ -256,6 +271,30 @@ void Rule::executeActionsIndependentOfChainedRuleResult(Transaction *trans, #ifndef NO_LOGS trans->debug(4, "Running [independent] (non-disruptive) " \ "action: " + a->m_name); +#endif + a->evaluate(this, trans, ruleMessage); + } + } + } + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *a = dynamic_cast(b.second.get()); + if (a->isDisruptive() == true) { + if (a->m_name == "block") { +#ifndef NO_LOGS + trans->debug(9, "Rule contains a `block' action"); + *containsBlock = true; +#endif + } + } else { + if (a->m_name == "setvar" || a->m_name == "msg" + || a->m_name == "log") { +#ifndef NO_LOGS + trans->debug(4, "Running [independent] (non-disruptive) " \ + "action: " + a->m_name); #endif a->evaluate(this, trans, ruleMessage); } @@ -401,6 +440,56 @@ std::list, none--; } } + + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *a = dynamic_cast(b.second.get()); + if (a->m_isNone) { + none++; + } + } + + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *a = dynamic_cast(b.second.get()); + if (none == 0) { + newValue = std::shared_ptr( + new std::string(a->evaluate(*value, trans))); + + if (multiMatch == true) { + if (*value != *newValue) { + ret.push_back(std::make_pair( + newValue, + transStr)); + value = newValue; + } + } + + value = newValue; +#ifndef NO_LOGS + trans->debug(9, " T (" + \ + std::to_string(transformations) + ") " + \ + a->m_name + ": \"" + \ + utils::string::limitTo(80, *value) + "\""); +#endif + if (transStr->empty()) { + transStr->append(a->m_name); + } else { + transStr->append("," + a->m_name); + } + transformations++; + } + if (a->m_isNone) { + none--; + } + } + if (multiMatch == true) { // v2 checks the last entry twice. Don't know why. ret.push_back(ret.back()); @@ -704,6 +793,36 @@ void Rule::executeActionsAfterFullMatch(Transaction *trans, continue; } +#ifndef NO_LOGS + trans->debug(4, "Not running disruptive action: " + \ + a->m_name + ". SecRuleEngine is not On"); +#endif + } + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *a = dynamic_cast(b.second.get()); + if (a->isDisruptive() == false) { + if (a->m_name != "setvar" && a->m_name != "log" + && a->m_name != "msg") { +#ifndef NO_LOGS + trans->debug(4, "Running (non-disruptive) action: " \ + + a->m_name); +#endif + a->evaluate(this, trans, ruleMessage); + } + continue; + } + if (trans->getRuleEngineState() == Rules::EnabledRuleEngine) { +#ifndef NO_LOGS + trans->debug(4, "Running (disruptive) action: " + a->m_name); +#endif + a->evaluate(this, trans, ruleMessage); + continue; + } + #ifndef NO_LOGS trans->debug(4, "Not running disruptive action: " + \ a->m_name + ". SecRuleEngine is not On"); @@ -789,7 +908,7 @@ bool Rule::evaluate(Transaction *trans, std::list, std::shared_ptr>> values; - bool multiMatch = getActionsByName("multimatch").size() > 0; + bool multiMatch = getActionsByName("multimatch", trans).size() > 0; values = executeDefaultTransformations(trans, value, multiMatch); @@ -861,7 +980,7 @@ end_exec: } -bool Rule::containsDisruptiveAction() { +bool Rule::containsStaticDisruptiveAction() { for (Action *a : m_actionsRuntimePos) { if (a->isDisruptive() == true) { return true; @@ -877,12 +996,13 @@ bool Rule::containsDisruptiveAction() { return true; } } - return false; } -std::vector Rule::getActionsByName(const std::string& name) { + +std::vector Rule::getActionsByName(const std::string& name, + Transaction *trans) { std::vector ret; for (auto &z : m_actionsRuntimePos) { if (z->m_name == name) { @@ -899,6 +1019,26 @@ std::vector Rule::getActionsByName(const std::string& name) { ret.push_back(z); } } + for (auto &b : + trans->m_rules->m_exceptions.m_action_pre_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *z = dynamic_cast(b.second.get()); + if (z->m_name == name) { + ret.push_back(z); + } + } + for (auto &b : + trans->m_rules->m_exceptions.m_action_pos_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *z = dynamic_cast(b.second.get()); + if (z->m_name == name) { + ret.push_back(z); + } + } return ret; } @@ -910,6 +1050,17 @@ bool Rule::containsTag(const std::string& name, Transaction *t) { return true; } } + for (auto &b : + t->m_rules->m_exceptions.m_action_pos_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *a = dynamic_cast(b.second.get()); + actions::Tag *tag = dynamic_cast (a); + if (tag != NULL && tag->getName(t) == name) { + return true; + } + } return false; } @@ -921,6 +1072,17 @@ bool Rule::containsMsg(const std::string& name, Transaction *t) { return true; } } + for (auto &b : + t->m_rules->m_exceptions.m_action_pos_update_target_by_id) { + if (m_ruleId != b.first) { + continue; + } + actions::Action *a = dynamic_cast(b.second.get()); + actions::Msg *msg = dynamic_cast (a); + if (msg != NULL && msg->data(t) == name) { + return true; + } + } return false; } diff --git a/src/rules_exceptions.cc b/src/rules_exceptions.cc index 9c770726..d204bf96 100644 --- a/src/rules_exceptions.cc +++ b/src/rules_exceptions.cc @@ -31,6 +31,32 @@ RulesExceptions::~RulesExceptions() { } +bool RulesExceptions::loadUpdateActionById(double id, + std::unique_ptr > > actions, + std::string *error) { + + for (auto &a : *actions) { + if (a->action_kind == actions::Action::ConfigurationKind) { + std::cout << "General failure, action: " << a->m_name; + std::cout << " has not expected to be used with UpdateActionByID."; + std::cout << std::endl; + } else if (a->action_kind + == actions::Action::RunTimeBeforeMatchAttemptKind) { + m_action_pre_update_target_by_id.emplace(std::pair>(id , std::move(a))); + } else if (a->action_kind == actions::Action::RunTimeOnlyIfMatchKind) { + m_action_pos_update_target_by_id.emplace(std::pair>(id , std::move(a))); + } else { + std::cout << "General failure, action: " << a->m_name; + std::cout << " has an unknown type." << std::endl; + } + } + + return true; +} + + bool RulesExceptions::loadRemoveRuleByMsg(const std::string &msg, std::string *error) { m_remove_rule_by_msg.push_back(msg); diff --git a/src/variables/xml.cc b/src/variables/xml.cc index 1651ff50..4c4f430f 100644 --- a/src/variables/xml.cc +++ b/src/variables/xml.cc @@ -93,7 +93,7 @@ void XML::evaluate(Transaction *t, t->debug(2, "XML: Can't look for xmlns, internal error."); #endif } else { - std::vector acts = rule->getActionsByName("xmlns"); + std::vector acts = rule->getActionsByName("xmlns", t); for (auto &x : acts) { actions::XmlNS *z = (actions::XmlNS *)x; if (xmlXPathRegisterNs(xpathCtx, (const xmlChar*)z->m_scope.c_str(),