// A Bison parser, made by GNU Bison 3.0.4.
// Skeleton implementation for Bison LALR(1) parsers in C++
// Copyright (C) 2002-2015 Free Software Foundation, Inc.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
// As a special exception, you may create a larger work that contains
// part or all of the Bison parser skeleton and distribute that work
// under terms of your choice, so long as that work isn't itself a
// parser generator using the skeleton or a modified version thereof
// as a parser skeleton. Alternatively, if you modify or redistribute
// the parser skeleton itself, you may (at your option) remove this
// special exception, which will cause the skeleton and the resulting
// Bison output files to be licensed under the GNU General Public
// License without this special exception.
// This special exception was added by the Free Software Foundation in
// version 2.2 of Bison.
// First part of user declarations.
#line 37 "seclang-parser.cc" // lalr1.cc:404
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
# define YY_NULLPTR nullptr
# else
# define YY_NULLPTR 0
# endif
# endif
#include "seclang-parser.hh"
// User implementation prologue.
#line 51 "seclang-parser.cc" // lalr1.cc:412
// Unqualified %code blocks.
#line 348 "seclang-parser.yy" // lalr1.cc:413
#include "src/parser/driver.h"
#line 57 "seclang-parser.cc" // lalr1.cc:413
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
# if ENABLE_NLS
# include // FIXME: INFRINGES ON USER NAME SPACE.
# define YY_(msgid) dgettext ("bison-runtime", msgid)
# endif
# endif
# ifndef YY_
# define YY_(msgid) msgid
# endif
#endif
#define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
the previous symbol: RHS[0] (always defined). */
# ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N) \
do \
if (N) \
{ \
(Current).begin = YYRHSLOC (Rhs, 1).begin; \
(Current).end = YYRHSLOC (Rhs, N).end; \
} \
else \
{ \
(Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
} \
while (/*CONSTCOND*/ false)
# endif
// Suppress unused-variable warnings by "using" E.
#define YYUSE(E) ((void) (E))
// Enable debugging if requested.
#if YYDEBUG
// A pseudo ostream that takes yydebug_ into account.
# define YYCDEBUG if (yydebug_) (*yycdebug_)
# define YY_SYMBOL_PRINT(Title, Symbol) \
do { \
if (yydebug_) \
{ \
*yycdebug_ << Title << ' '; \
yy_print_ (*yycdebug_, Symbol); \
*yycdebug_ << std::endl; \
} \
} while (false)
# define YY_REDUCE_PRINT(Rule) \
do { \
if (yydebug_) \
yy_reduce_print_ (Rule); \
} while (false)
# define YY_STACK_PRINT() \
do { \
if (yydebug_) \
yystack_print_ (); \
} while (false)
#else // !YYDEBUG
# define YYCDEBUG if (false) std::cerr
# define YY_SYMBOL_PRINT(Title, Symbol) YYUSE(Symbol)
# define YY_REDUCE_PRINT(Rule) static_cast(0)
# define YY_STACK_PRINT() static_cast(0)
#endif // !YYDEBUG
#define yyerrok (yyerrstatus_ = 0)
#define yyclearin (yyla.clear ())
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrorlab
#define YYRECOVERING() (!!yyerrstatus_)
namespace yy {
#line 143 "seclang-parser.cc" // lalr1.cc:479
/* Return YYSTR after stripping away unnecessary quotes and
backslashes, so that it's suitable for yyerror. The heuristic is
that double-quoting is unnecessary unless the string contains an
apostrophe, a comma, or backslash (other than backslash-backslash).
YYSTR is taken from yytname. */
std::string
seclang_parser::yytnamerr_ (const char *yystr)
{
if (*yystr == '"')
{
std::string yyr = "";
char const *yyp = yystr;
for (;;)
switch (*++yyp)
{
case '\'':
case ',':
goto do_not_strip_quotes;
case '\\':
if (*++yyp != '\\')
goto do_not_strip_quotes;
// Fall through.
default:
yyr += *yyp;
break;
case '"':
return yyr;
}
do_not_strip_quotes: ;
}
return yystr;
}
/// Build a parser object.
seclang_parser::seclang_parser (modsecurity::Parser::Driver& driver_yyarg)
:
#if YYDEBUG
yydebug_ (false),
yycdebug_ (&std::cerr),
#endif
driver (driver_yyarg)
{}
seclang_parser::~seclang_parser ()
{}
/*---------------.
| Symbol types. |
`---------------*/
// by_state.
inline
seclang_parser::by_state::by_state ()
: state (empty_state)
{}
inline
seclang_parser::by_state::by_state (const by_state& other)
: state (other.state)
{}
inline
void
seclang_parser::by_state::clear ()
{
state = empty_state;
}
inline
void
seclang_parser::by_state::move (by_state& that)
{
state = that.state;
that.clear ();
}
inline
seclang_parser::by_state::by_state (state_type s)
: state (s)
{}
inline
seclang_parser::symbol_number_type
seclang_parser::by_state::type_get () const
{
if (state == empty_state)
return empty_symbol;
else
return yystos_[state];
}
inline
seclang_parser::stack_symbol_type::stack_symbol_type ()
{}
inline
seclang_parser::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
: super_type (s, that.location)
{
switch (that.type_get ())
{
case 99: // "Accuracy"
case 100: // "Allow"
case 101: // "Append"
case 102: // "AuditLog"
case 103: // "Block"
case 104: // "Capture"
case 105: // "Chain"
case 106: // "ACTION_CTL_AUDIT_ENGINE"
case 107: // "ACTION_CTL_AUDIT_LOG_PARTS"
case 108: // "ACTION_CTL_BDY_JSON"
case 109: // "ACTION_CTL_BDY_XML"
case 110: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
case 111: // "ACTION_CTL_REQUEST_BODY_ACCESS"
case 112: // "ACTION_CTL_RULE_REMOVE_BY_ID"
case 113: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
case 114: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
case 115: // "Deny"
case 116: // "DeprecateVar"
case 117: // "Drop"
case 118: // "Exec"
case 119: // "ExpireVar"
case 120: // "Id"
case 121: // "InitCol"
case 122: // "Log"
case 123: // "LogData"
case 124: // "Maturity"
case 125: // "Msg"
case 126: // "MultiMatch"
case 127: // "NoAuditLog"
case 128: // "NoLog"
case 129: // "Pass"
case 130: // "Pause"
case 131: // "Phase"
case 132: // "Prepend"
case 133: // "Proxy"
case 134: // "Redirect"
case 135: // "Rev"
case 136: // "SanatiseArg"
case 137: // "SanatiseMatched"
case 138: // "SanatiseMatchedBytes"
case 139: // "SanatiseRequestHeader"
case 140: // "SanatiseResponseHeader"
case 141: // "SetEnv"
case 142: // "SetRsc"
case 143: // "SetSid"
case 144: // "SetUID"
case 145: // "Severity"
case 146: // "Skip"
case 147: // "SkipAfter"
case 148: // "Status"
case 149: // "Tag"
case 150: // "ACTION_TRANSFORMATION_CMD_LINE"
case 151: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
case 152: // "ACTION_TRANSFORMATION_CSS_DECODE"
case 153: // "ACTION_TRANSFORMATION_HEX_ENCODE"
case 154: // "ACTION_TRANSFORMATION_HEX_DECODE"
case 155: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
case 156: // "ACTION_TRANSFORMATION_JS_DECODE"
case 157: // "ACTION_TRANSFORMATION_LENGTH"
case 158: // "ACTION_TRANSFORMATION_LOWERCASE"
case 159: // "ACTION_TRANSFORMATION_MD5"
case 160: // "ACTION_TRANSFORMATION_NONE"
case 161: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
case 162: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
case 163: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
case 164: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
case 165: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
case 166: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
case 167: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
case 168: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
case 169: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
case 170: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
case 171: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
case 172: // "ACTION_TRANSFORMATION_SHA1"
case 173: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
case 174: // "ACTION_TRANSFORMATION_TRIM"
case 175: // "ACTION_TRANSFORMATION_UPPERCASE"
case 176: // "ACTION_TRANSFORMATION_URL_DECODE"
case 177: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
case 178: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
case 179: // "Ver"
case 180: // "xmlns"
case 181: // "CONFIG_COMPONENT_SIG"
case 182: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
case 183: // "CONFIG_SEC_WEB_APP_ID"
case 184: // "CONFIG_SEC_SERVER_SIG"
case 185: // "CONFIG_DIR_AUDIT_DIR"
case 186: // "CONFIG_DIR_AUDIT_DIR_MOD"
case 187: // "CONFIG_DIR_AUDIT_ENG"
case 188: // "CONFIG_DIR_AUDIT_FLE_MOD"
case 189: // "CONFIG_DIR_AUDIT_LOG"
case 190: // "CONFIG_DIR_AUDIT_LOG2"
case 191: // "CONFIG_DIR_AUDIT_LOG_P"
case 192: // "CONFIG_DIR_AUDIT_STS"
case 193: // "CONFIG_DIR_AUDIT_TPE"
case 194: // "CONFIG_DIR_DEBUG_LOG"
case 195: // "CONFIG_DIR_DEBUG_LVL"
case 196: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
case 197: // "CONFIG_DIR_GEO_DB"
case 198: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
case 199: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
case 200: // "CONFIG_DIR_REQ_BODY"
case 201: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
case 202: // "CONFIG_DIR_REQ_BODY_LIMIT"
case 203: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
case 204: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
case 205: // "CONFIG_DIR_RES_BODY"
case 206: // "CONFIG_DIR_RES_BODY_LIMIT"
case 207: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
case 208: // "CONFIG_DIR_RULE_ENG"
case 209: // "CONFIG_DIR_SEC_ACTION"
case 210: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
case 211: // "CONFIG_DIR_SEC_MARKER"
case 212: // "CONFIG_DIR_UNICODE_MAP_FILE"
case 213: // "CONFIG_SEC_COLLECTION_TIMEOUT"
case 214: // "CONFIG_SEC_HTTP_BLKEY"
case 215: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
case 216: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
case 217: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
case 218: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
case 219: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
case 220: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
case 221: // "CONFIG_UPDLOAD_KEEP_FILES"
case 222: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
case 223: // "CONFIG_UPLOAD_DIR"
case 224: // "CONFIG_UPLOAD_FILE_LIMIT"
case 225: // "CONFIG_UPLOAD_FILE_MODE"
case 226: // "CONFIG_VALUE_ABORT"
case 227: // "CONFIG_VALUE_DETC"
case 228: // "CONFIG_VALUE_HTTPS"
case 229: // "CONFIG_VALUE_OFF"
case 230: // "CONFIG_VALUE_ON"
case 231: // "CONFIG_VALUE_PARALLEL"
case 232: // "CONFIG_VALUE_PROCESS_PARTIAL"
case 233: // "CONFIG_VALUE_REJECT"
case 234: // "CONFIG_VALUE_RELEVANT_ONLY"
case 235: // "CONFIG_VALUE_SERIAL"
case 236: // "CONFIG_VALUE_WARN"
case 237: // "CONFIG_XML_EXTERNAL_ENTITY"
case 238: // "CONGIG_DIR_RESPONSE_BODY_MP"
case 239: // "CONGIG_DIR_SEC_ARG_SEP"
case 240: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
case 241: // "CONGIG_DIR_SEC_DATA_DIR"
case 242: // "CONGIG_DIR_SEC_STATUS_ENGINE"
case 243: // "CONGIG_DIR_SEC_TMP_DIR"
case 244: // "DIRECTIVE"
case 245: // "DIRECTIVE_SECRULESCRIPT"
case 246: // "FREE_TEXT"
case 247: // "OPERATOR"
case 248: // "OPERATOR_BEGINS_WITH"
case 249: // "OPERATOR_CONTAINS"
case 250: // "OPERATOR_CONTAINS_WORD"
case 251: // "OPERATOR_DETECT_SQLI"
case 252: // "OPERATOR_DETECT_XSS"
case 253: // "OPERATOR_ENDS_WITH"
case 254: // "OPERATOR_EQ"
case 255: // "OPERATOR_FUZZY_HASH"
case 256: // "OPERATOR_GE"
case 257: // "OPERATOR_GEOLOOKUP"
case 258: // "OPERATOR_GSB_LOOKUP"
case 259: // "OPERATOR_GT"
case 260: // "OPERATOR_INSPECT_FILE"
case 261: // "OPERATOR_IP_MATCH"
case 262: // "OPERATOR_IP_MATCH_FROM_FILE"
case 263: // "OPERATOR_LE"
case 264: // "OPERATOR_LT"
case 265: // "OPERATOR_PM"
case 266: // "OPERATOR_PM_FROM_FILE"
case 267: // "OPERATOR_RBL"
case 268: // "OPERATOR_RSUB"
case 269: // "OPERATOR_RX"
case 270: // "Operator RX (content only)"
case 271: // "OPERATOR_STR_EQ"
case 272: // "OPERATOR_STR_MATCH"
case 273: // "OPERATOR_UNCONDITIONAL_MATCH"
case 274: // "OPERATOR_VALIDATE_BYTE_RANGE"
case 275: // "OPERATOR_VALIDATE_DTD"
case 276: // "OPERATOR_VALIDATE_HASH"
case 277: // "OPERATOR_VALIDATE_SCHEMA"
case 278: // "OPERATOR_VALIDATE_URL_ENCODING"
case 279: // "OPERATOR_VALIDATE_UTF8_ENCODING"
case 280: // "OPERATOR_VERIFY_CC"
case 281: // "OPERATOR_VERIFY_CPF"
case 282: // "OPERATOR_VERIFY_SSN"
case 283: // "OPERATOR_WITHIN"
case 284: // "OP_QUOTE"
case 285: // "QUOTATION_MARK"
case 286: // "RUN_TIME_VAR_BLD"
case 287: // "RUN_TIME_VAR_DUR"
case 288: // "RUN_TIME_VAR_HSV"
case 289: // "RUN_TIME_VAR_REMOTE_USER"
case 290: // "RUN_TIME_VAR_TIME"
case 291: // "RUN_TIME_VAR_TIME_DAY"
case 292: // "RUN_TIME_VAR_TIME_EPOCH"
case 293: // "RUN_TIME_VAR_TIME_HOUR"
case 294: // "RUN_TIME_VAR_TIME_MIN"
case 295: // "RUN_TIME_VAR_TIME_MON"
case 296: // "RUN_TIME_VAR_TIME_SEC"
case 297: // "RUN_TIME_VAR_TIME_WDAY"
case 298: // "RUN_TIME_VAR_TIME_YEAR"
case 299: // "SETVAR_VARIABLE_PART"
case 300: // "SETVAR_CONTENT_PART"
case 301: // "VARIABLE"
case 302: // "Dictionary element"
case 303: // "Dictionary element, selected by regexp"
case 318: // setvar_variable
case 319: // setvar_content
value.move< std::string > (that.value);
break;
case 310: // op
case 311: // op_before_init
value.move< std::unique_ptr > (that.value);
break;
case 315: // var
value.move< std::unique_ptr > (that.value);
break;
case 316: // act
case 317: // setvar_action
value.move< std::unique_ptr > (that.value);
break;
case 313: // variables
case 314: // variables_may_be_quoted
value.move< std::unique_ptr > > > (that.value);
break;
case 308: // actions
case 309: // actions_may_quoted
value.move< std::unique_ptr > > > (that.value);
break;
default:
break;
}
// that is emptied.
that.type = empty_symbol;
}
inline
seclang_parser::stack_symbol_type&
seclang_parser::stack_symbol_type::operator= (const stack_symbol_type& that)
{
state = that.state;
switch (that.type_get ())
{
case 99: // "Accuracy"
case 100: // "Allow"
case 101: // "Append"
case 102: // "AuditLog"
case 103: // "Block"
case 104: // "Capture"
case 105: // "Chain"
case 106: // "ACTION_CTL_AUDIT_ENGINE"
case 107: // "ACTION_CTL_AUDIT_LOG_PARTS"
case 108: // "ACTION_CTL_BDY_JSON"
case 109: // "ACTION_CTL_BDY_XML"
case 110: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
case 111: // "ACTION_CTL_REQUEST_BODY_ACCESS"
case 112: // "ACTION_CTL_RULE_REMOVE_BY_ID"
case 113: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
case 114: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
case 115: // "Deny"
case 116: // "DeprecateVar"
case 117: // "Drop"
case 118: // "Exec"
case 119: // "ExpireVar"
case 120: // "Id"
case 121: // "InitCol"
case 122: // "Log"
case 123: // "LogData"
case 124: // "Maturity"
case 125: // "Msg"
case 126: // "MultiMatch"
case 127: // "NoAuditLog"
case 128: // "NoLog"
case 129: // "Pass"
case 130: // "Pause"
case 131: // "Phase"
case 132: // "Prepend"
case 133: // "Proxy"
case 134: // "Redirect"
case 135: // "Rev"
case 136: // "SanatiseArg"
case 137: // "SanatiseMatched"
case 138: // "SanatiseMatchedBytes"
case 139: // "SanatiseRequestHeader"
case 140: // "SanatiseResponseHeader"
case 141: // "SetEnv"
case 142: // "SetRsc"
case 143: // "SetSid"
case 144: // "SetUID"
case 145: // "Severity"
case 146: // "Skip"
case 147: // "SkipAfter"
case 148: // "Status"
case 149: // "Tag"
case 150: // "ACTION_TRANSFORMATION_CMD_LINE"
case 151: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
case 152: // "ACTION_TRANSFORMATION_CSS_DECODE"
case 153: // "ACTION_TRANSFORMATION_HEX_ENCODE"
case 154: // "ACTION_TRANSFORMATION_HEX_DECODE"
case 155: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
case 156: // "ACTION_TRANSFORMATION_JS_DECODE"
case 157: // "ACTION_TRANSFORMATION_LENGTH"
case 158: // "ACTION_TRANSFORMATION_LOWERCASE"
case 159: // "ACTION_TRANSFORMATION_MD5"
case 160: // "ACTION_TRANSFORMATION_NONE"
case 161: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
case 162: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
case 163: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
case 164: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
case 165: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
case 166: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
case 167: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
case 168: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
case 169: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
case 170: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
case 171: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
case 172: // "ACTION_TRANSFORMATION_SHA1"
case 173: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
case 174: // "ACTION_TRANSFORMATION_TRIM"
case 175: // "ACTION_TRANSFORMATION_UPPERCASE"
case 176: // "ACTION_TRANSFORMATION_URL_DECODE"
case 177: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
case 178: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
case 179: // "Ver"
case 180: // "xmlns"
case 181: // "CONFIG_COMPONENT_SIG"
case 182: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
case 183: // "CONFIG_SEC_WEB_APP_ID"
case 184: // "CONFIG_SEC_SERVER_SIG"
case 185: // "CONFIG_DIR_AUDIT_DIR"
case 186: // "CONFIG_DIR_AUDIT_DIR_MOD"
case 187: // "CONFIG_DIR_AUDIT_ENG"
case 188: // "CONFIG_DIR_AUDIT_FLE_MOD"
case 189: // "CONFIG_DIR_AUDIT_LOG"
case 190: // "CONFIG_DIR_AUDIT_LOG2"
case 191: // "CONFIG_DIR_AUDIT_LOG_P"
case 192: // "CONFIG_DIR_AUDIT_STS"
case 193: // "CONFIG_DIR_AUDIT_TPE"
case 194: // "CONFIG_DIR_DEBUG_LOG"
case 195: // "CONFIG_DIR_DEBUG_LVL"
case 196: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
case 197: // "CONFIG_DIR_GEO_DB"
case 198: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
case 199: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
case 200: // "CONFIG_DIR_REQ_BODY"
case 201: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
case 202: // "CONFIG_DIR_REQ_BODY_LIMIT"
case 203: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
case 204: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
case 205: // "CONFIG_DIR_RES_BODY"
case 206: // "CONFIG_DIR_RES_BODY_LIMIT"
case 207: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
case 208: // "CONFIG_DIR_RULE_ENG"
case 209: // "CONFIG_DIR_SEC_ACTION"
case 210: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
case 211: // "CONFIG_DIR_SEC_MARKER"
case 212: // "CONFIG_DIR_UNICODE_MAP_FILE"
case 213: // "CONFIG_SEC_COLLECTION_TIMEOUT"
case 214: // "CONFIG_SEC_HTTP_BLKEY"
case 215: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
case 216: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
case 217: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
case 218: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
case 219: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
case 220: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
case 221: // "CONFIG_UPDLOAD_KEEP_FILES"
case 222: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
case 223: // "CONFIG_UPLOAD_DIR"
case 224: // "CONFIG_UPLOAD_FILE_LIMIT"
case 225: // "CONFIG_UPLOAD_FILE_MODE"
case 226: // "CONFIG_VALUE_ABORT"
case 227: // "CONFIG_VALUE_DETC"
case 228: // "CONFIG_VALUE_HTTPS"
case 229: // "CONFIG_VALUE_OFF"
case 230: // "CONFIG_VALUE_ON"
case 231: // "CONFIG_VALUE_PARALLEL"
case 232: // "CONFIG_VALUE_PROCESS_PARTIAL"
case 233: // "CONFIG_VALUE_REJECT"
case 234: // "CONFIG_VALUE_RELEVANT_ONLY"
case 235: // "CONFIG_VALUE_SERIAL"
case 236: // "CONFIG_VALUE_WARN"
case 237: // "CONFIG_XML_EXTERNAL_ENTITY"
case 238: // "CONGIG_DIR_RESPONSE_BODY_MP"
case 239: // "CONGIG_DIR_SEC_ARG_SEP"
case 240: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
case 241: // "CONGIG_DIR_SEC_DATA_DIR"
case 242: // "CONGIG_DIR_SEC_STATUS_ENGINE"
case 243: // "CONGIG_DIR_SEC_TMP_DIR"
case 244: // "DIRECTIVE"
case 245: // "DIRECTIVE_SECRULESCRIPT"
case 246: // "FREE_TEXT"
case 247: // "OPERATOR"
case 248: // "OPERATOR_BEGINS_WITH"
case 249: // "OPERATOR_CONTAINS"
case 250: // "OPERATOR_CONTAINS_WORD"
case 251: // "OPERATOR_DETECT_SQLI"
case 252: // "OPERATOR_DETECT_XSS"
case 253: // "OPERATOR_ENDS_WITH"
case 254: // "OPERATOR_EQ"
case 255: // "OPERATOR_FUZZY_HASH"
case 256: // "OPERATOR_GE"
case 257: // "OPERATOR_GEOLOOKUP"
case 258: // "OPERATOR_GSB_LOOKUP"
case 259: // "OPERATOR_GT"
case 260: // "OPERATOR_INSPECT_FILE"
case 261: // "OPERATOR_IP_MATCH"
case 262: // "OPERATOR_IP_MATCH_FROM_FILE"
case 263: // "OPERATOR_LE"
case 264: // "OPERATOR_LT"
case 265: // "OPERATOR_PM"
case 266: // "OPERATOR_PM_FROM_FILE"
case 267: // "OPERATOR_RBL"
case 268: // "OPERATOR_RSUB"
case 269: // "OPERATOR_RX"
case 270: // "Operator RX (content only)"
case 271: // "OPERATOR_STR_EQ"
case 272: // "OPERATOR_STR_MATCH"
case 273: // "OPERATOR_UNCONDITIONAL_MATCH"
case 274: // "OPERATOR_VALIDATE_BYTE_RANGE"
case 275: // "OPERATOR_VALIDATE_DTD"
case 276: // "OPERATOR_VALIDATE_HASH"
case 277: // "OPERATOR_VALIDATE_SCHEMA"
case 278: // "OPERATOR_VALIDATE_URL_ENCODING"
case 279: // "OPERATOR_VALIDATE_UTF8_ENCODING"
case 280: // "OPERATOR_VERIFY_CC"
case 281: // "OPERATOR_VERIFY_CPF"
case 282: // "OPERATOR_VERIFY_SSN"
case 283: // "OPERATOR_WITHIN"
case 284: // "OP_QUOTE"
case 285: // "QUOTATION_MARK"
case 286: // "RUN_TIME_VAR_BLD"
case 287: // "RUN_TIME_VAR_DUR"
case 288: // "RUN_TIME_VAR_HSV"
case 289: // "RUN_TIME_VAR_REMOTE_USER"
case 290: // "RUN_TIME_VAR_TIME"
case 291: // "RUN_TIME_VAR_TIME_DAY"
case 292: // "RUN_TIME_VAR_TIME_EPOCH"
case 293: // "RUN_TIME_VAR_TIME_HOUR"
case 294: // "RUN_TIME_VAR_TIME_MIN"
case 295: // "RUN_TIME_VAR_TIME_MON"
case 296: // "RUN_TIME_VAR_TIME_SEC"
case 297: // "RUN_TIME_VAR_TIME_WDAY"
case 298: // "RUN_TIME_VAR_TIME_YEAR"
case 299: // "SETVAR_VARIABLE_PART"
case 300: // "SETVAR_CONTENT_PART"
case 301: // "VARIABLE"
case 302: // "Dictionary element"
case 303: // "Dictionary element, selected by regexp"
case 318: // setvar_variable
case 319: // setvar_content
value.copy< std::string > (that.value);
break;
case 310: // op
case 311: // op_before_init
value.copy< std::unique_ptr > (that.value);
break;
case 315: // var
value.copy< std::unique_ptr > (that.value);
break;
case 316: // act
case 317: // setvar_action
value.copy< std::unique_ptr > (that.value);
break;
case 313: // variables
case 314: // variables_may_be_quoted
value.copy< std::unique_ptr > > > (that.value);
break;
case 308: // actions
case 309: // actions_may_quoted
value.copy< std::unique_ptr > > > (that.value);
break;
default:
break;
}
location = that.location;
return *this;
}
template
inline
void
seclang_parser::yy_destroy_ (const char* yymsg, basic_symbol& yysym) const
{
if (yymsg)
YY_SYMBOL_PRINT (yymsg, yysym);
}
#if YYDEBUG
template
void
seclang_parser::yy_print_ (std::ostream& yyo,
const basic_symbol& yysym) const
{
std::ostream& yyoutput = yyo;
YYUSE (yyoutput);
symbol_number_type yytype = yysym.type_get ();
// Avoid a (spurious) G++ 4.8 warning about "array subscript is
// below array bounds".
if (yysym.empty ())
std::abort ();
yyo << (yytype < yyntokens_ ? "token" : "nterm")
<< ' ' << yytname_[yytype] << " ("
<< yysym.location << ": ";
YYUSE (yytype);
yyo << ')';
}
#endif
inline
void
seclang_parser::yypush_ (const char* m, state_type s, symbol_type& sym)
{
stack_symbol_type t (s, sym);
yypush_ (m, t);
}
inline
void
seclang_parser::yypush_ (const char* m, stack_symbol_type& s)
{
if (m)
YY_SYMBOL_PRINT (m, s);
yystack_.push (s);
}
inline
void
seclang_parser::yypop_ (unsigned int n)
{
yystack_.pop (n);
}
#if YYDEBUG
std::ostream&
seclang_parser::debug_stream () const
{
return *yycdebug_;
}
void
seclang_parser::set_debug_stream (std::ostream& o)
{
yycdebug_ = &o;
}
seclang_parser::debug_level_type
seclang_parser::debug_level () const
{
return yydebug_;
}
void
seclang_parser::set_debug_level (debug_level_type l)
{
yydebug_ = l;
}
#endif // YYDEBUG
inline seclang_parser::state_type
seclang_parser::yy_lr_goto_state_ (state_type yystate, int yysym)
{
int yyr = yypgoto_[yysym - yyntokens_] + yystate;
if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
return yytable_[yyr];
else
return yydefgoto_[yysym - yyntokens_];
}
inline bool
seclang_parser::yy_pact_value_is_default_ (int yyvalue)
{
return yyvalue == yypact_ninf_;
}
inline bool
seclang_parser::yy_table_value_is_error_ (int yyvalue)
{
return yyvalue == yytable_ninf_;
}
int
seclang_parser::parse ()
{
// State.
int yyn;
/// Length of the RHS of the rule being reduced.
int yylen = 0;
// Error handling.
int yynerrs_ = 0;
int yyerrstatus_ = 0;
/// The lookahead symbol.
symbol_type yyla;
/// The locations where the error started and ended.
stack_symbol_type yyerror_range[3];
/// The return value of parse ().
int yyresult;
// FIXME: This shoud be completely indented. It is not yet to
// avoid gratuitous conflicts when merging into the master branch.
try
{
YYCDEBUG << "Starting parse" << std::endl;
// User initialization code.
#line 341 "/home/zimmerle/core-trustwave/ModSecurity/src/parser/seclang-parser.yy" // lalr1.cc:741
{
// Initialize the initial location.
yyla.location.begin.filename = yyla.location.end.filename = &driver.file;
}
#line 885 "seclang-parser.cc" // lalr1.cc:741
/* Initialize the stack. The initial state will be set in
yynewstate, since the latter expects the semantical and the
location values to have been already stored, initialize these
stacks with a primary value. */
yystack_.clear ();
yypush_ (YY_NULLPTR, 0, yyla);
// A new symbol was pushed on the stack.
yynewstate:
YYCDEBUG << "Entering state " << yystack_[0].state << std::endl;
// Accept?
if (yystack_[0].state == yyfinal_)
goto yyacceptlab;
goto yybackup;
// Backup.
yybackup:
// Try to take a decision without lookahead.
yyn = yypact_[yystack_[0].state];
if (yy_pact_value_is_default_ (yyn))
goto yydefault;
// Read a lookahead token.
if (yyla.empty ())
{
YYCDEBUG << "Reading a token: ";
try
{
symbol_type yylookahead (yylex (driver));
yyla.move (yylookahead);
}
catch (const syntax_error& yyexc)
{
error (yyexc);
goto yyerrlab1;
}
}
YY_SYMBOL_PRINT ("Next token is", yyla);
/* If the proper action on seeing token YYLA.TYPE is to reduce or
to detect an error, take that action. */
yyn += yyla.type_get ();
if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
goto yydefault;
// Reduce or error.
yyn = yytable_[yyn];
if (yyn <= 0)
{
if (yy_table_value_is_error_ (yyn))
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
// Count tokens shifted since error; after three, turn off error status.
if (yyerrstatus_)
--yyerrstatus_;
// Shift the lookahead token.
yypush_ ("Shifting", yyn, yyla);
goto yynewstate;
/*-----------------------------------------------------------.
| yydefault -- do the default action for the current state. |
`-----------------------------------------------------------*/
yydefault:
yyn = yydefact_[yystack_[0].state];
if (yyn == 0)
goto yyerrlab;
goto yyreduce;
/*-----------------------------.
| yyreduce -- Do a reduction. |
`-----------------------------*/
yyreduce:
yylen = yyr2_[yyn];
{
stack_symbol_type yylhs;
yylhs.state = yy_lr_goto_state_(yystack_[yylen].state, yyr1_[yyn]);
/* Variants are always initialized to an empty instance of the
correct type. The default '$$ = $1' action is NOT applied
when using variants. */
switch (yyr1_[yyn])
{
case 99: // "Accuracy"
case 100: // "Allow"
case 101: // "Append"
case 102: // "AuditLog"
case 103: // "Block"
case 104: // "Capture"
case 105: // "Chain"
case 106: // "ACTION_CTL_AUDIT_ENGINE"
case 107: // "ACTION_CTL_AUDIT_LOG_PARTS"
case 108: // "ACTION_CTL_BDY_JSON"
case 109: // "ACTION_CTL_BDY_XML"
case 110: // "ACTION_CTL_FORCE_REQ_BODY_VAR"
case 111: // "ACTION_CTL_REQUEST_BODY_ACCESS"
case 112: // "ACTION_CTL_RULE_REMOVE_BY_ID"
case 113: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_ID"
case 114: // "ACTION_CTL_RULE_REMOVE_TARGET_BY_TAG"
case 115: // "Deny"
case 116: // "DeprecateVar"
case 117: // "Drop"
case 118: // "Exec"
case 119: // "ExpireVar"
case 120: // "Id"
case 121: // "InitCol"
case 122: // "Log"
case 123: // "LogData"
case 124: // "Maturity"
case 125: // "Msg"
case 126: // "MultiMatch"
case 127: // "NoAuditLog"
case 128: // "NoLog"
case 129: // "Pass"
case 130: // "Pause"
case 131: // "Phase"
case 132: // "Prepend"
case 133: // "Proxy"
case 134: // "Redirect"
case 135: // "Rev"
case 136: // "SanatiseArg"
case 137: // "SanatiseMatched"
case 138: // "SanatiseMatchedBytes"
case 139: // "SanatiseRequestHeader"
case 140: // "SanatiseResponseHeader"
case 141: // "SetEnv"
case 142: // "SetRsc"
case 143: // "SetSid"
case 144: // "SetUID"
case 145: // "Severity"
case 146: // "Skip"
case 147: // "SkipAfter"
case 148: // "Status"
case 149: // "Tag"
case 150: // "ACTION_TRANSFORMATION_CMD_LINE"
case 151: // "ACTION_TRANSFORMATION_COMPRESS_WHITESPACE"
case 152: // "ACTION_TRANSFORMATION_CSS_DECODE"
case 153: // "ACTION_TRANSFORMATION_HEX_ENCODE"
case 154: // "ACTION_TRANSFORMATION_HEX_DECODE"
case 155: // "ACTION_TRANSFORMATION_HTML_ENTITY_DECODE"
case 156: // "ACTION_TRANSFORMATION_JS_DECODE"
case 157: // "ACTION_TRANSFORMATION_LENGTH"
case 158: // "ACTION_TRANSFORMATION_LOWERCASE"
case 159: // "ACTION_TRANSFORMATION_MD5"
case 160: // "ACTION_TRANSFORMATION_NONE"
case 161: // "ACTION_TRANSFORMATION_NORMALISE_PATH"
case 162: // "ACTION_TRANSFORMATION_NORMALISE_PATH_WIN"
case 163: // "ACTION_TRANSFORMATION_PARITY_EVEN_7_BIT"
case 164: // "ACTION_TRANSFORMATION_PARITY_ODD_7_BIT"
case 165: // "ACTION_TRANSFORMATION_PARITY_ZERO_7_BIT"
case 166: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS"
case 167: // "ACTION_TRANSFORMATION_REMOVE_COMMENTS_CHAR"
case 168: // "ACTION_TRANSFORMATION_REMOVE_NULLS"
case 169: // "ACTION_TRANSFORMATION_REMOVE_WHITESPACE"
case 170: // "ACTION_TRANSFORMATION_REPLACE_COMMENTS"
case 171: // "ACTION_TRANSFORMATION_REPLACE_NULLS"
case 172: // "ACTION_TRANSFORMATION_SHA1"
case 173: // "ACTION_TRANSFORMATION_SQL_HEX_DECODE"
case 174: // "ACTION_TRANSFORMATION_TRIM"
case 175: // "ACTION_TRANSFORMATION_UPPERCASE"
case 176: // "ACTION_TRANSFORMATION_URL_DECODE"
case 177: // "ACTION_TRANSFORMATION_URL_DECODE_UNI"
case 178: // "ACTION_TRANSFORMATION_UTF8_TO_UNICODE"
case 179: // "Ver"
case 180: // "xmlns"
case 181: // "CONFIG_COMPONENT_SIG"
case 182: // "CONFIG_SEC_ARGUMENT_SEPARATOR"
case 183: // "CONFIG_SEC_WEB_APP_ID"
case 184: // "CONFIG_SEC_SERVER_SIG"
case 185: // "CONFIG_DIR_AUDIT_DIR"
case 186: // "CONFIG_DIR_AUDIT_DIR_MOD"
case 187: // "CONFIG_DIR_AUDIT_ENG"
case 188: // "CONFIG_DIR_AUDIT_FLE_MOD"
case 189: // "CONFIG_DIR_AUDIT_LOG"
case 190: // "CONFIG_DIR_AUDIT_LOG2"
case 191: // "CONFIG_DIR_AUDIT_LOG_P"
case 192: // "CONFIG_DIR_AUDIT_STS"
case 193: // "CONFIG_DIR_AUDIT_TPE"
case 194: // "CONFIG_DIR_DEBUG_LOG"
case 195: // "CONFIG_DIR_DEBUG_LVL"
case 196: // "CONFIG_SEC_CACHE_TRANSFORMATIONS"
case 197: // "CONFIG_DIR_GEO_DB"
case 198: // "CONFIG_DIR_PCRE_MATCH_LIMIT"
case 199: // "CONFIG_DIR_PCRE_MATCH_LIMIT_RECURSION"
case 200: // "CONFIG_DIR_REQ_BODY"
case 201: // "CONFIG_DIR_REQ_BODY_IN_MEMORY_LIMIT"
case 202: // "CONFIG_DIR_REQ_BODY_LIMIT"
case 203: // "CONFIG_DIR_REQ_BODY_LIMIT_ACTION"
case 204: // "CONFIG_DIR_REQ_BODY_NO_FILES_LIMIT"
case 205: // "CONFIG_DIR_RES_BODY"
case 206: // "CONFIG_DIR_RES_BODY_LIMIT"
case 207: // "CONFIG_DIR_RES_BODY_LIMIT_ACTION"
case 208: // "CONFIG_DIR_RULE_ENG"
case 209: // "CONFIG_DIR_SEC_ACTION"
case 210: // "CONFIG_DIR_SEC_DEFAULT_ACTION"
case 211: // "CONFIG_DIR_SEC_MARKER"
case 212: // "CONFIG_DIR_UNICODE_MAP_FILE"
case 213: // "CONFIG_SEC_COLLECTION_TIMEOUT"
case 214: // "CONFIG_SEC_HTTP_BLKEY"
case 215: // "CONFIG_SEC_REMOTE_RULES_FAIL_ACTION"
case 216: // "CONFIG_SEC_RULE_REMOVE_BY_ID"
case 217: // "CONFIG_SEC_RULE_REMOVE_BY_MSG"
case 218: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_TAG"
case 219: // "CONFIG_SEC_RULE_UPDATE_TARGET_BY_ID"
case 220: // "CONFIG_SEC_RULE_UPDATE_ACTION_BY_ID"
case 221: // "CONFIG_UPDLOAD_KEEP_FILES"
case 222: // "CONFIG_UPDLOAD_SAVE_TMP_FILES"
case 223: // "CONFIG_UPLOAD_DIR"
case 224: // "CONFIG_UPLOAD_FILE_LIMIT"
case 225: // "CONFIG_UPLOAD_FILE_MODE"
case 226: // "CONFIG_VALUE_ABORT"
case 227: // "CONFIG_VALUE_DETC"
case 228: // "CONFIG_VALUE_HTTPS"
case 229: // "CONFIG_VALUE_OFF"
case 230: // "CONFIG_VALUE_ON"
case 231: // "CONFIG_VALUE_PARALLEL"
case 232: // "CONFIG_VALUE_PROCESS_PARTIAL"
case 233: // "CONFIG_VALUE_REJECT"
case 234: // "CONFIG_VALUE_RELEVANT_ONLY"
case 235: // "CONFIG_VALUE_SERIAL"
case 236: // "CONFIG_VALUE_WARN"
case 237: // "CONFIG_XML_EXTERNAL_ENTITY"
case 238: // "CONGIG_DIR_RESPONSE_BODY_MP"
case 239: // "CONGIG_DIR_SEC_ARG_SEP"
case 240: // "CONGIG_DIR_SEC_COOKIE_FORMAT"
case 241: // "CONGIG_DIR_SEC_DATA_DIR"
case 242: // "CONGIG_DIR_SEC_STATUS_ENGINE"
case 243: // "CONGIG_DIR_SEC_TMP_DIR"
case 244: // "DIRECTIVE"
case 245: // "DIRECTIVE_SECRULESCRIPT"
case 246: // "FREE_TEXT"
case 247: // "OPERATOR"
case 248: // "OPERATOR_BEGINS_WITH"
case 249: // "OPERATOR_CONTAINS"
case 250: // "OPERATOR_CONTAINS_WORD"
case 251: // "OPERATOR_DETECT_SQLI"
case 252: // "OPERATOR_DETECT_XSS"
case 253: // "OPERATOR_ENDS_WITH"
case 254: // "OPERATOR_EQ"
case 255: // "OPERATOR_FUZZY_HASH"
case 256: // "OPERATOR_GE"
case 257: // "OPERATOR_GEOLOOKUP"
case 258: // "OPERATOR_GSB_LOOKUP"
case 259: // "OPERATOR_GT"
case 260: // "OPERATOR_INSPECT_FILE"
case 261: // "OPERATOR_IP_MATCH"
case 262: // "OPERATOR_IP_MATCH_FROM_FILE"
case 263: // "OPERATOR_LE"
case 264: // "OPERATOR_LT"
case 265: // "OPERATOR_PM"
case 266: // "OPERATOR_PM_FROM_FILE"
case 267: // "OPERATOR_RBL"
case 268: // "OPERATOR_RSUB"
case 269: // "OPERATOR_RX"
case 270: // "Operator RX (content only)"
case 271: // "OPERATOR_STR_EQ"
case 272: // "OPERATOR_STR_MATCH"
case 273: // "OPERATOR_UNCONDITIONAL_MATCH"
case 274: // "OPERATOR_VALIDATE_BYTE_RANGE"
case 275: // "OPERATOR_VALIDATE_DTD"
case 276: // "OPERATOR_VALIDATE_HASH"
case 277: // "OPERATOR_VALIDATE_SCHEMA"
case 278: // "OPERATOR_VALIDATE_URL_ENCODING"
case 279: // "OPERATOR_VALIDATE_UTF8_ENCODING"
case 280: // "OPERATOR_VERIFY_CC"
case 281: // "OPERATOR_VERIFY_CPF"
case 282: // "OPERATOR_VERIFY_SSN"
case 283: // "OPERATOR_WITHIN"
case 284: // "OP_QUOTE"
case 285: // "QUOTATION_MARK"
case 286: // "RUN_TIME_VAR_BLD"
case 287: // "RUN_TIME_VAR_DUR"
case 288: // "RUN_TIME_VAR_HSV"
case 289: // "RUN_TIME_VAR_REMOTE_USER"
case 290: // "RUN_TIME_VAR_TIME"
case 291: // "RUN_TIME_VAR_TIME_DAY"
case 292: // "RUN_TIME_VAR_TIME_EPOCH"
case 293: // "RUN_TIME_VAR_TIME_HOUR"
case 294: // "RUN_TIME_VAR_TIME_MIN"
case 295: // "RUN_TIME_VAR_TIME_MON"
case 296: // "RUN_TIME_VAR_TIME_SEC"
case 297: // "RUN_TIME_VAR_TIME_WDAY"
case 298: // "RUN_TIME_VAR_TIME_YEAR"
case 299: // "SETVAR_VARIABLE_PART"
case 300: // "SETVAR_CONTENT_PART"
case 301: // "VARIABLE"
case 302: // "Dictionary element"
case 303: // "Dictionary element, selected by regexp"
case 318: // setvar_variable
case 319: // setvar_content
yylhs.value.build< std::string > ();
break;
case 310: // op
case 311: // op_before_init
yylhs.value.build< std::unique_ptr > ();
break;
case 315: // var
yylhs.value.build< std::unique_ptr > ();
break;
case 316: // act
case 317: // setvar_action
yylhs.value.build< std::unique_ptr > ();
break;
case 313: // variables
case 314: // variables_may_be_quoted
yylhs.value.build< std::unique_ptr > > > ();
break;
case 308: // actions
case 309: // actions_may_quoted
yylhs.value.build< std::unique_ptr > > > ();
break;
default:
break;
}
// Compute the default @$.
{
slice slice (yystack_, yylen);
YYLLOC_DEFAULT (yylhs.location, slice, yylen);
}
// Perform the reduction.
YY_REDUCE_PRINT (yyn);
try
{
switch (yyn)
{
case 2:
#line 692 "seclang-parser.yy" // lalr1.cc:859
{
return 0;
}
#line 1231 "seclang-parser.cc" // lalr1.cc:859
break;
case 6:
#line 705 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStorageDirMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8));
}
#line 1239 "seclang-parser.cc" // lalr1.cc:859
break;
case 7:
#line 711 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStorageDir(yystack_[0].value.as< std::string > ());
}
#line 1247 "seclang-parser.cc" // lalr1.cc:859
break;
case 8:
#line 717 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::RelevantOnlyAuditLogStatus);
}
#line 1255 "seclang-parser.cc" // lalr1.cc:859
break;
case 9:
#line 721 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OffAuditLogStatus);
}
#line 1263 "seclang-parser.cc" // lalr1.cc:859
break;
case 10:
#line 725 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setStatus(modsecurity::audit_log::AuditLog::OnAuditLogStatus);
}
#line 1271 "seclang-parser.cc" // lalr1.cc:859
break;
case 11:
#line 731 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFileMode(strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8));
}
#line 1279 "seclang-parser.cc" // lalr1.cc:859
break;
case 12:
#line 737 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFilePath2(yystack_[0].value.as< std::string > ());
}
#line 1287 "seclang-parser.cc" // lalr1.cc:859
break;
case 13:
#line 743 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setParts(yystack_[0].value.as< std::string > ());
}
#line 1295 "seclang-parser.cc" // lalr1.cc:859
break;
case 14:
#line 749 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFilePath1(yystack_[0].value.as< std::string > ());
}
#line 1303 "seclang-parser.cc" // lalr1.cc:859
break;
case 15:
#line 754 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::JSONAuditLogFormat);
}
#line 1311 "seclang-parser.cc" // lalr1.cc:859
break;
case 16:
#line 759 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setFormat(modsecurity::audit_log::AuditLog::NativeAuditLogFormat);
}
#line 1319 "seclang-parser.cc" // lalr1.cc:859
break;
case 17:
#line 765 "seclang-parser.yy" // lalr1.cc:859
{
std::string relevant_status(yystack_[0].value.as< std::string > ());
driver.m_auditLog->setRelevantStatus(relevant_status);
}
#line 1328 "seclang-parser.cc" // lalr1.cc:859
break;
case 18:
#line 772 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::SerialAuditLogType);
}
#line 1336 "seclang-parser.cc" // lalr1.cc:859
break;
case 19:
#line 776 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::ParallelAuditLogType);
}
#line 1344 "seclang-parser.cc" // lalr1.cc:859
break;
case 20:
#line 780 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_auditLog->setType(modsecurity::audit_log::AuditLog::HttpsAuditLogType);
}
#line 1352 "seclang-parser.cc" // lalr1.cc:859
break;
case 21:
#line 786 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadKeepFiles = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 1360 "seclang-parser.cc" // lalr1.cc:859
break;
case 22:
#line 790 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadKeepFiles = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 1368 "seclang-parser.cc" // lalr1.cc:859
break;
case 23:
#line 794 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadFileLimit.m_set = true;
driver.m_uploadFileLimit.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 10);
}
#line 1377 "seclang-parser.cc" // lalr1.cc:859
break;
case 24:
#line 799 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadFileMode.m_set = true;
driver.m_uploadFileMode.m_value = strtol(yystack_[0].value.as< std::string > ().c_str(), NULL, 8);
}
#line 1386 "seclang-parser.cc" // lalr1.cc:859
break;
case 25:
#line 804 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_uploadDirectory.m_set = true;
driver.m_uploadDirectory.m_value = yystack_[0].value.as< std::string > ();
}
#line 1395 "seclang-parser.cc" // lalr1.cc:859
break;
case 26:
#line 809 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 1403 "seclang-parser.cc" // lalr1.cc:859
break;
case 27:
#line 813 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_tmpSaveUploadedFiles = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 1411 "seclang-parser.cc" // lalr1.cc:859
break;
case 28:
#line 820 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ());
}
#line 1419 "seclang-parser.cc" // lalr1.cc:859
break;
case 29:
#line 824 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
}
#line 1427 "seclang-parser.cc" // lalr1.cc:859
break;
case 30:
#line 831 "seclang-parser.yy" // lalr1.cc:859
{
ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[3].location)
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 1437 "seclang-parser.cc" // lalr1.cc:859
break;
case 31:
#line 837 "seclang-parser.yy" // lalr1.cc:859
{
std::unique_ptr>> b(new std::vector>());
ACTION_INIT(yystack_[0].value.as< std::unique_ptr > (), yystack_[1].location)
b->push_back(std::move(yystack_[0].value.as< std::unique_ptr > ()));
yylhs.value.as< std::unique_ptr > > > () = std::move(b);
}
#line 1448 "seclang-parser.cc" // lalr1.cc:859
break;
case 32:
#line 847 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ());
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[1].location, error);
YYERROR;
}
}
#line 1461 "seclang-parser.cc" // lalr1.cc:859
break;
case 33:
#line 856 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > () = std::move(yystack_[0].value.as< std::unique_ptr > ());
yylhs.value.as< std::unique_ptr > ()->m_negation = true;
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1475 "seclang-parser.cc" // lalr1.cc:859
break;
case 34:
#line 866 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[1].location, error);
YYERROR;
}
}
#line 1488 "seclang-parser.cc" // lalr1.cc:859
break;
case 35:
#line 875 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx("Rx", utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()), true));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1501 "seclang-parser.cc" // lalr1.cc:859
break;
case 36:
#line 887 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::UnconditionalMatch());
}
#line 1509 "seclang-parser.cc" // lalr1.cc:859
break;
case 37:
#line 891 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectSQLi());
}
#line 1517 "seclang-parser.cc" // lalr1.cc:859
break;
case 38:
#line 895 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::DetectXSS());
}
#line 1525 "seclang-parser.cc" // lalr1.cc:859
break;
case 39:
#line 899 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUrlEncoding());
}
#line 1533 "seclang-parser.cc" // lalr1.cc:859
break;
case 40:
#line 903 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateUtf8Encoding());
}
#line 1541 "seclang-parser.cc" // lalr1.cc:859
break;
case 41:
#line 907 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::InspectFile($1); */
OPERATOR_NOT_SUPPORTED("InspectFile", yystack_[2].location);
}
#line 1550 "seclang-parser.cc" // lalr1.cc:859
break;
case 42:
#line 912 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::FuzzyHash(utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ())));
std::string error;
if (yylhs.value.as< std::unique_ptr > ()->init(driver.ref.back(), &error) == false) {
driver.error(yystack_[2].location, error);
YYERROR;
}
}
#line 1563 "seclang-parser.cc" // lalr1.cc:859
break;
case 43:
#line 921 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateByteRange(yystack_[0].value.as< std::string > ()));
}
#line 1571 "seclang-parser.cc" // lalr1.cc:859
break;
case 44:
#line 925 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateDTD(yystack_[0].value.as< std::string > ()));
}
#line 1579 "seclang-parser.cc" // lalr1.cc:859
break;
case 45:
#line 929 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::ValidateHash($1); */
OPERATOR_NOT_SUPPORTED("ValidateHash", yystack_[2].location);
}
#line 1588 "seclang-parser.cc" // lalr1.cc:859
break;
case 46:
#line 934 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ValidateSchema(yystack_[0].value.as< std::string > ()));
}
#line 1596 "seclang-parser.cc" // lalr1.cc:859
break;
case 47:
#line 938 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::VerifyCC(yystack_[0].value.as< std::string > ()));
}
#line 1604 "seclang-parser.cc" // lalr1.cc:859
break;
case 48:
#line 942 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::VerifyCPF($1); */
OPERATOR_NOT_SUPPORTED("VerifyCPF", yystack_[2].location);
}
#line 1613 "seclang-parser.cc" // lalr1.cc:859
break;
case 49:
#line 947 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::VerifySSN($1); */
OPERATOR_NOT_SUPPORTED("VerifySSN", yystack_[2].location);
}
#line 1622 "seclang-parser.cc" // lalr1.cc:859
break;
case 50:
#line 952 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::GsbLookup($1); */
OPERATOR_NOT_SUPPORTED("GsbLookup", yystack_[2].location);
}
#line 1631 "seclang-parser.cc" // lalr1.cc:859
break;
case 51:
#line 957 "seclang-parser.yy" // lalr1.cc:859
{
/* $$ = new operators::Rsub($1); */
OPERATOR_NOT_SUPPORTED("Rsub", yystack_[2].location);
}
#line 1640 "seclang-parser.cc" // lalr1.cc:859
break;
case 52:
#line 962 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Within(yystack_[0].value.as< std::string > ()));
}
#line 1648 "seclang-parser.cc" // lalr1.cc:859
break;
case 53:
#line 966 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::ContainsWord(yystack_[0].value.as< std::string > ()));
}
#line 1656 "seclang-parser.cc" // lalr1.cc:859
break;
case 54:
#line 970 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Contains(yystack_[0].value.as< std::string > ()));
}
#line 1664 "seclang-parser.cc" // lalr1.cc:859
break;
case 55:
#line 974 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::EndsWith(yystack_[0].value.as< std::string > ()));
}
#line 1672 "seclang-parser.cc" // lalr1.cc:859
break;
case 56:
#line 978 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Eq(yystack_[0].value.as< std::string > ()));
}
#line 1680 "seclang-parser.cc" // lalr1.cc:859
break;
case 57:
#line 982 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Ge(yystack_[0].value.as< std::string > ()));
}
#line 1688 "seclang-parser.cc" // lalr1.cc:859
break;
case 58:
#line 986 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Gt(yystack_[0].value.as< std::string > ()));
}
#line 1696 "seclang-parser.cc" // lalr1.cc:859
break;
case 59:
#line 990 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatchF(yystack_[0].value.as< std::string > ()));
}
#line 1704 "seclang-parser.cc" // lalr1.cc:859
break;
case 60:
#line 994 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::IpMatch(yystack_[0].value.as< std::string > ()));
}
#line 1712 "seclang-parser.cc" // lalr1.cc:859
break;
case 61:
#line 998 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Le(yystack_[0].value.as< std::string > ()));
}
#line 1720 "seclang-parser.cc" // lalr1.cc:859
break;
case 62:
#line 1002 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Lt(yystack_[0].value.as< std::string > ()));
}
#line 1728 "seclang-parser.cc" // lalr1.cc:859
break;
case 63:
#line 1006 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::PmFromFile(yystack_[0].value.as< std::string > ()));
}
#line 1736 "seclang-parser.cc" // lalr1.cc:859
break;
case 64:
#line 1010 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Pm(yystack_[0].value.as< std::string > ()));
}
#line 1744 "seclang-parser.cc" // lalr1.cc:859
break;
case 65:
#line 1014 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rbl(yystack_[0].value.as< std::string > ()));
}
#line 1752 "seclang-parser.cc" // lalr1.cc:859
break;
case 66:
#line 1018 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::Rx(yystack_[0].value.as< std::string > ()));
}
#line 1760 "seclang-parser.cc" // lalr1.cc:859
break;
case 67:
#line 1022 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrEq(yystack_[0].value.as< std::string > ()));
}
#line 1768 "seclang-parser.cc" // lalr1.cc:859
break;
case 68:
#line 1026 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::StrMatch(yystack_[0].value.as< std::string > ()));
}
#line 1776 "seclang-parser.cc" // lalr1.cc:859
break;
case 69:
#line 1030 "seclang-parser.yy" // lalr1.cc:859
{
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::BeginsWith(yystack_[0].value.as< std::string > ()));
}
#line 1784 "seclang-parser.cc" // lalr1.cc:859
break;
case 70:
#line 1034 "seclang-parser.yy" // lalr1.cc:859
{
#ifdef WITH_GEOIP
OPERATOR_CONTAINER(yylhs.value.as< std::unique_ptr > (), new operators::GeoLookup());
#else
std::stringstream ss;
ss << "This version of ModSecurity was not compiled with GeoIP support.";
driver.error(yystack_[1].location, ss.str());
YYERROR;
#endif // WITH_GEOIP
}
#line 1799 "seclang-parser.cc" // lalr1.cc:859
break;
case 72:
#line 1049 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
std::vector *v = new std::vector();
for (auto &i : *yystack_[2].value.as< std::unique_ptr > > > ().get()) {
v->push_back(i.release());
}
Operator *op = yystack_[1].value.as< std::unique_ptr > ().release();
Rule *rule = new Rule(
/* op */ op,
/* variables */ v,
/* actions */ a,
/* file name */ driver.ref.back(),
/* line number */ yystack_[4].location.end.line
);
if (driver.addSecRule(rule) == false) {
delete rule;
YYERROR;
}
}
#line 1827 "seclang-parser.cc" // lalr1.cc:859
break;
case 73:
#line 1073 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *v = new std::vector();
for (auto &i : *yystack_[1].value.as< std::unique_ptr > > > ().get()) {
v->push_back(i.release());
}
Rule *rule = new Rule(
/* op */ yystack_[0].value.as< std::unique_ptr > ().release(),
/* variables */ v,
/* actions */ NULL,
/* file name */ driver.ref.back(),
/* line number */ yystack_[3].location.end.line
);
if (driver.addSecRule(rule) == false) {
delete rule;
YYERROR;
}
}
#line 1850 "seclang-parser.cc" // lalr1.cc:859
break;
case 74:
#line 1092 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
Rule *rule = new Rule(
/* op */ NULL,
/* variables */ NULL,
/* actions */ a,
/* file name */ driver.ref.back(),
/* line number */ yystack_[2].location.end.line
);
driver.addSecAction(rule);
}
#line 1869 "seclang-parser.cc" // lalr1.cc:859
break;
case 75:
#line 1107 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[2].location, "SecRuleScript is not yet supported.");
YYERROR;
}
#line 1878 "seclang-parser.cc" // lalr1.cc:859
break;
case 76:
#line 1112 "seclang-parser.yy" // lalr1.cc:859
{
std::vector *actions = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
actions->push_back(i.release());
}
std::vector checkedActions;
int definedPhase = -1;
int secRuleDefinedPhase = -1;
for (actions::Action *a : *actions) {
actions::Phase *phase = dynamic_cast(a);
if (phase != NULL) {
definedPhase = phase->m_phase;
secRuleDefinedPhase = phase->m_secRulesPhase;
delete phase;
} else if (a->action_kind == actions::Action::RunTimeOnlyIfMatchKind ||
a->action_kind == actions::Action::RunTimeBeforeMatchAttemptKind) {
actions::transformations::None *none = dynamic_cast(a);
if (none != NULL) {
driver.error(yystack_[2].location, "The transformation none is not suitable to be part of the SecDefaultActions");
YYERROR;
}
checkedActions.push_back(a);
} else {
driver.error(yystack_[2].location, "The action '" + a->m_name + "' is not suitable to be part of the SecDefaultActions");
YYERROR;
}
}
if (definedPhase == -1) {
definedPhase = modsecurity::Phases::RequestHeadersPhase;
}
if (!driver.m_defaultActions[definedPhase].empty()) {
std::stringstream ss;
ss << "SecDefaultActions can only be placed once per phase and configuration context. Phase ";
ss << secRuleDefinedPhase;
ss << " was informed already.";
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
for (actions::Action *a : checkedActions) {
driver.m_defaultActions[definedPhase].push_back(a);
}
delete actions;
}
#line 1929 "seclang-parser.cc" // lalr1.cc:859
break;
case 77:
#line 1159 "seclang-parser.yy" // lalr1.cc:859
{
driver.addSecMarker(modsecurity::utils::string::removeBracketsIfNeeded(yystack_[0].value.as< std::string > ()));
}
#line 1937 "seclang-parser.cc" // lalr1.cc:859
break;
case 78:
#line 1163 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRuleEngine = modsecurity::Rules::DisabledRuleEngine;
}
#line 1945 "seclang-parser.cc" // lalr1.cc:859
break;
case 79:
#line 1167 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRuleEngine = modsecurity::Rules::EnabledRuleEngine;
}
#line 1953 "seclang-parser.cc" // lalr1.cc:859
break;
case 80:
#line 1171 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRuleEngine = modsecurity::Rules::DetectionOnlyRuleEngine;
}
#line 1961 "seclang-parser.cc" // lalr1.cc:859
break;
case 81:
#line 1175 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRequestBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 1969 "seclang-parser.cc" // lalr1.cc:859
break;
case 82:
#line 1179 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secRequestBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 1977 "seclang-parser.cc" // lalr1.cc:859
break;
case 83:
#line 1183 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secResponseBodyAccess = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 1985 "seclang-parser.cc" // lalr1.cc:859
break;
case 84:
#line 1187 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secResponseBodyAccess = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 1993 "seclang-parser.cc" // lalr1.cc:859
break;
case 85:
#line 1191 "seclang-parser.yy" // lalr1.cc:859
{
if (yystack_[0].value.as< std::string > ().length() != 1) {
driver.error(yystack_[1].location, "Argument separator should be set to a single character.");
YYERROR;
}
driver.m_secArgumentSeparator.m_value = yystack_[0].value.as< std::string > ();
driver.m_secArgumentSeparator.m_set = true;
}
#line 2006 "seclang-parser.cc" // lalr1.cc:859
break;
case 86:
#line 1200 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_components.push_back(yystack_[0].value.as< std::string > ());
}
#line 2014 "seclang-parser.cc" // lalr1.cc:859
break;
case 87:
#line 1204 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[1].location, "SecWebAppId is not supported.");
YYERROR;
}
#line 2023 "seclang-parser.cc" // lalr1.cc:859
break;
case 88:
#line 1209 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[1].location, "SecServerSignature is not supported.");
YYERROR;
}
#line 2032 "seclang-parser.cc" // lalr1.cc:859
break;
case 89:
#line 1214 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[2].location, "ContentInjection is not yet supported.");
YYERROR;
}
#line 2041 "seclang-parser.cc" // lalr1.cc:859
break;
case 90:
#line 1219 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[1].location, "SecCacheTransformations is not supported.");
YYERROR;
}
#line 2050 "seclang-parser.cc" // lalr1.cc:859
break;
case 91:
#line 1224 "seclang-parser.yy" // lalr1.cc:859
{
driver.error(yystack_[2].location, "ContentInjection is not yet supported.");
YYERROR;
}
#line 2059 "seclang-parser.cc" // lalr1.cc:859
break;
case 92:
#line 1229 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.load(yystack_[0].value.as< std::string > (), &error) == false) {
std::stringstream ss;
ss << "SecRuleRemoveById: failed to load:";
ss << yystack_[0].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2076 "seclang-parser.cc" // lalr1.cc:859
break;
case 93:
#line 1242 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.loadRemoveRuleByMsg(yystack_[0].value.as< std::string > (), &error) == false) {
std::stringstream ss;
ss << "SecRuleRemoveByMsg: failed to load:";
ss << yystack_[0].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2093 "seclang-parser.cc" // lalr1.cc:859
break;
case 94:
#line 1255 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
if (driver.m_exceptions.loadUpdateTargetByTag(yystack_[1].value.as< std::string > (), std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
std::stringstream ss;
ss << "SecRuleUpdateTargetByTag: failed to load:";
ss << yystack_[1].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
}
#line 2110 "seclang-parser.cc" // lalr1.cc:859
break;
case 95:
#line 1268 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
double ruleId;
try {
ruleId = std::stod(yystack_[1].value.as< std::string > ());
} catch (...) {
std::stringstream ss;
ss << "SecRuleUpdateTargetById: failed to load:";
ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not ";
ss << "seems to be a valid rule id.";
ss << ". ";
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
if (driver.m_exceptions.loadUpdateTargetById(ruleId, std::move(yystack_[0].value.as< std::unique_ptr > > > ()), &error) == false) {
std::stringstream ss;
ss << "SecRuleUpdateTargetById: failed to load:";
ss << yystack_[1].value.as< std::string > ();
ss << ". ";
ss << error;
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
}
#line 2140 "seclang-parser.cc" // lalr1.cc:859
break;
case 96:
#line 1294 "seclang-parser.yy" // lalr1.cc:859
{
std::string error;
double ruleId;
try {
ruleId = std::stod(yystack_[1].value.as< std::string > ());
} catch (...) {
std::stringstream ss;
ss << "SecRuleUpdateActionById: failed to load:";
ss << "The input \"" + yystack_[1].value.as< std::string > () + "\" does not ";
ss << "seems to be a valid rule id.";
ss << ". ";
driver.error(yystack_[2].location, ss.str());
YYERROR;
}
std::vector *a = new std::vector();
for (auto &i : *yystack_[0].value.as< std::unique_ptr > > > ().get()) {
a->push_back(i.release());
}
driver.error(yystack_[2].location, "SecRuleUpdateActionById is not yet supported");
YYERROR;
}
#line 2169 "seclang-parser.cc" // lalr1.cc:859
break;
case 97:
#line 1320 "seclang-parser.yy" // lalr1.cc:859
{
if (driver.m_debugLog != NULL) {
driver.m_debugLog->setDebugLogLevel(atoi(yystack_[0].value.as< std::string > ().c_str()));
} else {
std::stringstream ss;
ss << "Internal error, there is no DebugLog ";
ss << "object associated with the driver class";
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2185 "seclang-parser.cc" // lalr1.cc:859
break;
case 98:
#line 1332 "seclang-parser.yy" // lalr1.cc:859
{
if (driver.m_debugLog != NULL) {
std::string error;
driver.m_debugLog->setDebugLogFile(yystack_[0].value.as< std::string > (), &error);
if (error.size() > 0) {
std::stringstream ss;
ss << "Failed to start DebugLog: " << error;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
} else {
std::stringstream ss;
ss << "Internal error, there is no DebugLog ";
ss << "object associated with the driver class";
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
}
#line 2208 "seclang-parser.cc" // lalr1.cc:859
break;
case 99:
#line 1352 "seclang-parser.yy" // lalr1.cc:859
{
#ifdef WITH_GEOIP
std::string err;
std::string file = modsecurity::utils::find_resource(yystack_[0].value.as< std::string > (),
driver.ref.back(), &err);
if (file.empty()) {
std::stringstream ss;
ss << "Failed to load locate the GeoDB file from: " << yystack_[0].value.as< std::string > () << " ";
ss << err;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
if (GeoLookup::getInstance().setDataBase(file) == false) {
std::stringstream ss;
ss << "Failed to load the GeoDB from: ";
ss << file;
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
#else
std::stringstream ss;
ss << "This version of ModSecurity was not compiled with GeoIP support.";
driver.error(yystack_[1].location, ss.str());
YYERROR;
#endif // WITH_GEOIP
}
#line 2239 "seclang-parser.cc" // lalr1.cc:859
break;
case 100:
#line 1380 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyLimit.m_set = true;
driver.m_requestBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
}
#line 2248 "seclang-parser.cc" // lalr1.cc:859
break;
case 101:
#line 1385 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyNoFilesLimit.m_set = true;
driver.m_requestBodyNoFilesLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
}
#line 2257 "seclang-parser.cc" // lalr1.cc:859
break;
case 102:
#line 1390 "seclang-parser.yy" // lalr1.cc:859
{
std::stringstream ss;
ss << "As of ModSecurity version 3.0, SecRequestBodyInMemoryLimit is no longer ";
ss << "supported. Instead, you can use your web server configurations to control ";
ss << "those values. ModSecurity will follow the web server decision.";
driver.error(yystack_[1].location, ss.str());
YYERROR;
}
#line 2270 "seclang-parser.cc" // lalr1.cc:859
break;
case 103:
#line 1399 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyLimit.m_set = true;
driver.m_responseBodyLimit.m_value = atoi(yystack_[0].value.as< std::string > ().c_str());
}
#line 2279 "seclang-parser.cc" // lalr1.cc:859
break;
case 104:
#line 1404 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction;
}
#line 2287 "seclang-parser.cc" // lalr1.cc:859
break;
case 105:
#line 1408 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_requestBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction;
}
#line 2295 "seclang-parser.cc" // lalr1.cc:859
break;
case 106:
#line 1412 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::ProcessPartialBodyLimitAction;
}
#line 2303 "seclang-parser.cc" // lalr1.cc:859
break;
case 107:
#line 1416 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyLimitAction = modsecurity::Rules::BodyLimitAction::RejectBodyLimitAction;
}
#line 2311 "seclang-parser.cc" // lalr1.cc:859
break;
case 108:
#line 1420 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::AbortOnFailedRemoteRulesAction;
}
#line 2319 "seclang-parser.cc" // lalr1.cc:859
break;
case 109:
#line 1424 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_remoteRulesActionOnFailed = Rules::OnFailedRemoteRulesAction::WarnOnFailedRemoteRulesAction;
}
#line 2327 "seclang-parser.cc" // lalr1.cc:859
break;
case 112:
#line 1430 "seclang-parser.yy" // lalr1.cc:859
{
std::istringstream buf(yystack_[0].value.as< std::string > ());
std::istream_iterator beg(buf), end;
std::set tokens(beg, end);
driver.m_responseBodyTypeToBeInspected.m_set = true;
for (std::set::iterator it=tokens.begin();
it!=tokens.end(); ++it)
{
driver.m_responseBodyTypeToBeInspected.m_value.insert(*it);
}
}
#line 2343 "seclang-parser.cc" // lalr1.cc:859
break;
case 113:
#line 1442 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_responseBodyTypeToBeInspected.m_set = true;
driver.m_responseBodyTypeToBeInspected.m_clear = true;
driver.m_responseBodyTypeToBeInspected.m_value.clear();
}
#line 2353 "seclang-parser.cc" // lalr1.cc:859
break;
case 114:
#line 1448 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secXMLExternalEntity = modsecurity::RulesProperties::FalseConfigBoolean;
}
#line 2361 "seclang-parser.cc" // lalr1.cc:859
break;
case 115:
#line 1452 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_secXMLExternalEntity = modsecurity::RulesProperties::TrueConfigBoolean;
}
#line 2369 "seclang-parser.cc" // lalr1.cc:859
break;
case 122:
#line 1462 "seclang-parser.yy" // lalr1.cc:859
{
}
#line 2376 "seclang-parser.cc" // lalr1.cc:859
break;
case 123:
#line 1465 "seclang-parser.yy" // lalr1.cc:859
{
driver.m_httpblKey.m_set = true;
driver.m_httpblKey.m_value = yystack_[0].value.as< std::string > ();
}
#line 2385 "seclang-parser.cc" // lalr1.cc:859
break;
case 124:
#line 1473 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[0].value.as< std::unique_ptr > > > ());
}
#line 2393 "seclang-parser.cc" // lalr1.cc:859
break;
case 125:
#line 1477 "seclang-parser.yy" // lalr1.cc:859
{
yylhs.value.as< std::unique_ptr > > > () = std::move(yystack_[1].value.as< std::unique_ptr > > > ());
}
#line 2401 "seclang-parser.cc" // lalr1.cc:859
break;
case 126:
#line 1484 "seclang-parser.yy" // lalr1.cc:859
{
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 2410 "seclang-parser.cc" // lalr1.cc:859
break;
case 127:
#line 1489 "seclang-parser.yy" // lalr1.cc:859
{
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 2420 "seclang-parser.cc" // lalr1.cc:859
break;
case 128:
#line 1495 "seclang-parser.yy" // lalr1.cc:859
{
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 2430 "seclang-parser.cc" // lalr1.cc:859
break;
case 129:
#line 1501 "seclang-parser.yy" // lalr1.cc:859
{
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 2440 "seclang-parser.cc" // lalr1.cc:859
break;
case 130:
#line 1507 "seclang-parser.yy" // lalr1.cc:859
{
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 2451 "seclang-parser.cc" // lalr1.cc:859
break;
case 131:
#line 1514 "seclang-parser.yy" // lalr1.cc:859
{
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 2462 "seclang-parser.cc" // lalr1.cc:859
break;
case 132:
#line 1524 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2470 "seclang-parser.cc" // lalr1.cc:859
break;
case 133:
#line 1528 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2478 "seclang-parser.cc" // lalr1.cc:859
break;
case 134:
#line 1532 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Args_NoDictElement());
}
#line 2486 "seclang-parser.cc" // lalr1.cc:859
break;
case 135:
#line 1536 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2494 "seclang-parser.cc" // lalr1.cc:859
break;
case 136:
#line 1540 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2502 "seclang-parser.cc" // lalr1.cc:859
break;
case 137:
#line 1544 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPost_NoDictElement());
}
#line 2510 "seclang-parser.cc" // lalr1.cc:859
break;
case 138:
#line 1548 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2518 "seclang-parser.cc" // lalr1.cc:859
break;
case 139:
#line 1552 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2526 "seclang-parser.cc" // lalr1.cc:859
break;
case 140:
#line 1556 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGet_NoDictElement());
}
#line 2534 "seclang-parser.cc" // lalr1.cc:859
break;
case 141:
#line 1560 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2542 "seclang-parser.cc" // lalr1.cc:859
break;
case 142:
#line 1564 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2550 "seclang-parser.cc" // lalr1.cc:859
break;
case 143:
#line 1568 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesSizes_NoDictElement());
}
#line 2558 "seclang-parser.cc" // lalr1.cc:859
break;
case 144:
#line 1572 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2566 "seclang-parser.cc" // lalr1.cc:859
break;
case 145:
#line 1576 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2574 "seclang-parser.cc" // lalr1.cc:859
break;
case 146:
#line 1580 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesNames_NoDictElement());
}
#line 2582 "seclang-parser.cc" // lalr1.cc:859
break;
case 147:
#line 1584 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2590 "seclang-parser.cc" // lalr1.cc:859
break;
case 148:
#line 1588 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2598 "seclang-parser.cc" // lalr1.cc:859
break;
case 149:
#line 1592 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpContent_NoDictElement());
}
#line 2606 "seclang-parser.cc" // lalr1.cc:859
break;
case 150:
#line 1596 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2614 "seclang-parser.cc" // lalr1.cc:859
break;
case 151:
#line 1600 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2622 "seclang-parser.cc" // lalr1.cc:859
break;
case 152:
#line 1604 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartFileName_NoDictElement());
}
#line 2630 "seclang-parser.cc" // lalr1.cc:859
break;
case 153:
#line 1608 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2638 "seclang-parser.cc" // lalr1.cc:859
break;
case 154:
#line 1612 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2646 "seclang-parser.cc" // lalr1.cc:859
break;
case 155:
#line 1616 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultiPartName_NoDictElement());
}
#line 2654 "seclang-parser.cc" // lalr1.cc:859
break;
case 156:
#line 1620 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2662 "seclang-parser.cc" // lalr1.cc:859
break;
case 157:
#line 1624 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2670 "seclang-parser.cc" // lalr1.cc:859
break;
case 158:
#line 1628 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarsNames_NoDictElement());
}
#line 2678 "seclang-parser.cc" // lalr1.cc:859
break;
case 159:
#line 1632 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2686 "seclang-parser.cc" // lalr1.cc:859
break;
case 160:
#line 1636 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2694 "seclang-parser.cc" // lalr1.cc:859
break;
case 161:
#line 1640 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVars_NoDictElement());
}
#line 2702 "seclang-parser.cc" // lalr1.cc:859
break;
case 162:
#line 1644 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2710 "seclang-parser.cc" // lalr1.cc:859
break;
case 163:
#line 1648 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2718 "seclang-parser.cc" // lalr1.cc:859
break;
case 164:
#line 1652 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Files_NoDictElement());
}
#line 2726 "seclang-parser.cc" // lalr1.cc:859
break;
case 165:
#line 1656 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2734 "seclang-parser.cc" // lalr1.cc:859
break;
case 166:
#line 1660 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2742 "seclang-parser.cc" // lalr1.cc:859
break;
case 167:
#line 1664 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookies_NoDictElement());
}
#line 2750 "seclang-parser.cc" // lalr1.cc:859
break;
case 168:
#line 1668 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2758 "seclang-parser.cc" // lalr1.cc:859
break;
case 169:
#line 1672 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2766 "seclang-parser.cc" // lalr1.cc:859
break;
case 170:
#line 1676 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeaders_NoDictElement());
}
#line 2774 "seclang-parser.cc" // lalr1.cc:859
break;
case 171:
#line 1680 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2782 "seclang-parser.cc" // lalr1.cc:859
break;
case 172:
#line 1684 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2790 "seclang-parser.cc" // lalr1.cc:859
break;
case 173:
#line 1688 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeaders_NoDictElement());
}
#line 2798 "seclang-parser.cc" // lalr1.cc:859
break;
case 174:
#line 1692 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2806 "seclang-parser.cc" // lalr1.cc:859
break;
case 175:
#line 1696 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2814 "seclang-parser.cc" // lalr1.cc:859
break;
case 176:
#line 1700 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Geo_NoDictElement());
}
#line 2822 "seclang-parser.cc" // lalr1.cc:859
break;
case 177:
#line 1704 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2830 "seclang-parser.cc" // lalr1.cc:859
break;
case 178:
#line 1708 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2838 "seclang-parser.cc" // lalr1.cc:859
break;
case 179:
#line 1712 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestCookiesNames_NoDictElement());
}
#line 2846 "seclang-parser.cc" // lalr1.cc:859
break;
case 180:
#line 1716 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2854 "seclang-parser.cc" // lalr1.cc:859
break;
case 181:
#line 1720 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2862 "seclang-parser.cc" // lalr1.cc:859
break;
case 182:
#line 1724 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Rule_NoDictElement());
}
#line 2870 "seclang-parser.cc" // lalr1.cc:859
break;
case 183:
#line 1728 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ()));
}
#line 2878 "seclang-parser.cc" // lalr1.cc:859
break;
case 184:
#line 1732 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV:" + yystack_[0].value.as< std::string > ()));
}
#line 2886 "seclang-parser.cc" // lalr1.cc:859
break;
case 185:
#line 1736 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Env("ENV"));
}
#line 2894 "seclang-parser.cc" // lalr1.cc:859
break;
case 186:
#line 1740 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ()));
}
#line 2902 "seclang-parser.cc" // lalr1.cc:859
break;
case 187:
#line 1744 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML("XML:" + yystack_[0].value.as< std::string > ()));
}
#line 2910 "seclang-parser.cc" // lalr1.cc:859
break;
case 188:
#line 1748 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::XML_NoDictElement());
}
#line 2918 "seclang-parser.cc" // lalr1.cc:859
break;
case 189:
#line 1752 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2926 "seclang-parser.cc" // lalr1.cc:859
break;
case 190:
#line 1756 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2934 "seclang-parser.cc" // lalr1.cc:859
break;
case 191:
#line 1760 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesTmpNames_NoDictElement());
}
#line 2942 "seclang-parser.cc" // lalr1.cc:859
break;
case 192:
#line 1765 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2950 "seclang-parser.cc" // lalr1.cc:859
break;
case 193:
#line 1769 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2958 "seclang-parser.cc" // lalr1.cc:859
break;
case 194:
#line 1773 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Ip_NoDictElement());
}
#line 2966 "seclang-parser.cc" // lalr1.cc:859
break;
case 195:
#line 1778 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2974 "seclang-parser.cc" // lalr1.cc:859
break;
case 196:
#line 1782 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 2982 "seclang-parser.cc" // lalr1.cc:859
break;
case 197:
#line 1786 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Global_NoDictElement());
}
#line 2990 "seclang-parser.cc" // lalr1.cc:859
break;
case 198:
#line 1791 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 2998 "seclang-parser.cc" // lalr1.cc:859
break;
case 199:
#line 1795 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3006 "seclang-parser.cc" // lalr1.cc:859
break;
case 200:
#line 1799 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Tx_NoDictElement());
}
#line 3014 "seclang-parser.cc" // lalr1.cc:859
break;
case 201:
#line 1804 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3022 "seclang-parser.cc" // lalr1.cc:859
break;
case 202:
#line 1808 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3030 "seclang-parser.cc" // lalr1.cc:859
break;
case 203:
#line 1812 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::Session_NoDictElement());
}
#line 3038 "seclang-parser.cc" // lalr1.cc:859
break;
case 204:
#line 1817 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3046 "seclang-parser.cc" // lalr1.cc:859
break;
case 205:
#line 1821 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3054 "seclang-parser.cc" // lalr1.cc:859
break;
case 206:
#line 1825 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsNames_NoDictElement());
}
#line 3062 "seclang-parser.cc" // lalr1.cc:859
break;
case 207:
#line 1829 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3070 "seclang-parser.cc" // lalr1.cc:859
break;
case 208:
#line 1833 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3078 "seclang-parser.cc" // lalr1.cc:859
break;
case 209:
#line 1837 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsGetNames_NoDictElement());
}
#line 3086 "seclang-parser.cc" // lalr1.cc:859
break;
case 210:
#line 1842 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3094 "seclang-parser.cc" // lalr1.cc:859
break;
case 211:
#line 1846 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3102 "seclang-parser.cc" // lalr1.cc:859
break;
case 212:
#line 1850 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsPostNames_NoDictElement());
}
#line 3110 "seclang-parser.cc" // lalr1.cc:859
break;
case 213:
#line 1855 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3118 "seclang-parser.cc" // lalr1.cc:859
break;
case 214:
#line 1859 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3126 "seclang-parser.cc" // lalr1.cc:859
break;
case 215:
#line 1863 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestHeadersNames_NoDictElement());
}
#line 3134 "seclang-parser.cc" // lalr1.cc:859
break;
case 216:
#line 1868 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseContentType());
}
#line 3142 "seclang-parser.cc" // lalr1.cc:859
break;
case 217:
#line 1873 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElement(yystack_[0].value.as< std::string > ()));
}
#line 3150 "seclang-parser.cc" // lalr1.cc:859
break;
case 218:
#line 1877 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_DictElementRegexp(yystack_[0].value.as< std::string > ()));
}
#line 3158 "seclang-parser.cc" // lalr1.cc:859
break;
case 219:
#line 1881 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ResponseHeadersNames_NoDictElement());
}
#line 3166 "seclang-parser.cc" // lalr1.cc:859
break;
case 220:
#line 1885 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ArgsCombinedSize());
}
#line 3174 "seclang-parser.cc" // lalr1.cc:859
break;
case 221:
#line 1889 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::AuthType());
}
#line 3182 "seclang-parser.cc" // lalr1.cc:859
break;
case 222:
#line 1893 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FilesCombinedSize());
}
#line 3190 "seclang-parser.cc" // lalr1.cc:859
break;
case 223:
#line 1897 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequest());
}
#line 3198 "seclang-parser.cc" // lalr1.cc:859
break;
case 224:
#line 1901 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::FullRequestLength());
}
#line 3206 "seclang-parser.cc" // lalr1.cc:859
break;
case 225:
#line 1905 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::InboundDataError());
}
#line 3214 "seclang-parser.cc" // lalr1.cc:859
break;
case 226:
#line 1909 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVar());
}
#line 3222 "seclang-parser.cc" // lalr1.cc:859
break;
case 227:
#line 1913 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MatchedVarName());
}
#line 3230 "seclang-parser.cc" // lalr1.cc:859
break;
case 228:
#line 1917 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartCrlfLFLines());
}
#line 3238 "seclang-parser.cc" // lalr1.cc:859
break;
case 229:
#line 1921 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartDateAfter());
}
#line 3246 "seclang-parser.cc" // lalr1.cc:859
break;
case 230:
#line 1925 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartFileLimitExceeded());
}
#line 3254 "seclang-parser.cc" // lalr1.cc:859
break;
case 231:
#line 1929 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartHeaderFolding());
}
#line 3262 "seclang-parser.cc" // lalr1.cc:859
break;
case 232:
#line 1933 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidHeaderFolding());
}
#line 3270 "seclang-parser.cc" // lalr1.cc:859
break;
case 233:
#line 1937 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartInvalidQuoting());
}
#line 3278 "seclang-parser.cc" // lalr1.cc:859
break;
case 234:
#line 1941 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartStrictError());
}
#line 3286 "seclang-parser.cc" // lalr1.cc:859
break;
case 235:
#line 1945 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::MultipartUnmatchedBoundary());
}
#line 3294 "seclang-parser.cc" // lalr1.cc:859
break;
case 236:
#line 1949 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::OutboundDataError());
}
#line 3302 "seclang-parser.cc" // lalr1.cc:859
break;
case 237:
#line 1953 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::PathInfo());
}
#line 3310 "seclang-parser.cc" // lalr1.cc:859
break;
case 238:
#line 1957 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::QueryString());
}
#line 3318 "seclang-parser.cc" // lalr1.cc:859
break;
case 239:
#line 1961 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteAddr());
}
#line 3326 "seclang-parser.cc" // lalr1.cc:859
break;
case 240:
#line 1965 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemoteHost());
}
#line 3334 "seclang-parser.cc" // lalr1.cc:859
break;
case 241:
#line 1969 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RemotePort());
}
#line 3342 "seclang-parser.cc" // lalr1.cc:859
break;
case 242:
#line 1973 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyError());
}
#line 3350 "seclang-parser.cc" // lalr1.cc:859
break;
case 243:
#line 1977 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyErrorMsg());
}
#line 3358 "seclang-parser.cc" // lalr1.cc:859
break;
case 244:
#line 1981 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessor());
}
#line 3366 "seclang-parser.cc" // lalr1.cc:859
break;
case 245:
#line 1985 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorError());
}
#line 3374 "seclang-parser.cc" // lalr1.cc:859
break;
case 246:
#line 1989 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::ReqbodyProcessorErrorMsg());
}
#line 3382 "seclang-parser.cc" // lalr1.cc:859
break;
case 247:
#line 1993 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBasename());
}
#line 3390 "seclang-parser.cc" // lalr1.cc:859
break;
case 248:
#line 1997 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBody());
}
#line 3398 "seclang-parser.cc" // lalr1.cc:859
break;
case 249:
#line 2001 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr > (), new Variables::RequestBodyLength());
}
#line 3406 "seclang-parser.cc" // lalr1.cc:859
break;
case 250:
#line 2005 "seclang-parser.yy" // lalr1.cc:859
{
VARIABLE_CONTAINER(yylhs.value.as< std::unique_ptr