Skip to content

Commit 2d892a3

Browse files
author
Felipe Zimmerle
committed
Adds support for multipart vars on the parser
1 parent 6fe8655 commit 2d892a3

17 files changed

+6773
-6191
lines changed

headers/modsecurity/transaction.h

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,22 @@ class TransactionAnchoredVariables {
108108
m_variableInboundDataError(t, "INBOUND_DATA_ERROR"),
109109
m_variableMatchedVar(t, "MATCHED_VAR"),
110110
m_variableMatchedVarName(t, "MATCHED_VAR_NAME"),
111+
m_variableMultipartBoundaryQuoted(t, "MULTIPART_BOUNDARY_QUOTED"),
112+
m_variableMultipartBoundaryWhiteSpace(t,
113+
"MULTIPART_BOUNDARY_WHITESPACE"),
111114
m_variableMultipartCrlfLFLines(t, "MULTIPART_CRLF_LF_LINES"),
112115
m_variableMultipartDataAfter(t, "MULTIPART_DATA_AFTER"),
116+
m_variableMultipartDataBefore(t, "MULTIPART_DATA_BEFORE"),
113117
m_variableMultipartFileLimitExceeded(t,
114118
"MULTIPART_FILE_LIMIT_EXCEEDED"),
115-
m_variableMultipartStrictError(t, "MULTIPART_STRICT_ERROR"),
116119
m_variableMultipartHeaderFolding(t, "MULTIPART_HEADER_FOLDING"),
117-
m_variableMultipartInvalidQuoting(t, "MULTIPART_INVALID_QUOTING"),
118120
m_variableMultipartInvalidHeaderFolding(t,
119121
"MULTIPART_INVALID_HEADER_FOLDING"),
122+
m_variableMultipartInvalidPart(t, "MULTIPART_INVALID_PART"),
123+
m_variableMultipartInvalidQuoting(t, "MULTIPART_INVALID_QUOTING"),
124+
m_variableMultipartLFLine(t, "MULTIPART_LF_LINE"),
125+
m_variableMultipartMissingSemicolon(t, "MULTIPART_MISSING_SEMICOLON"),
126+
m_variableMultipartStrictError(t, "MULTIPART_STRICT_ERROR"),
120127
m_variableMultipartUnmatchedBoundary(t,
121128
"MULTIPART_UNMATCHED_BOUNDARY"),
122129
m_variableOutboundDataError(t, "OUTBOUND_DATA_ERROR"),
@@ -157,8 +164,8 @@ class TransactionAnchoredVariables {
157164
m_variableFilesSizes(t, "FILES_SIZES"),
158165
m_variableFilesNames(t, "FILES_NAMES"),
159166
m_variableFilesTmpContent(t, "FILES_TMP_CONTENT"),
160-
m_variableMultiPartFileName(t, "MULTIPART_FILENAME"),
161-
m_variableMultiPartName(t, "MULTIPART_NAME"),
167+
m_variableMultipartFileName(t, "MULTIPART_FILENAME"),
168+
m_variableMultipartName(t, "MULTIPART_NAME"),
162169
m_variableMatchedVarsNames(t, "MATCHED_VARS_NAMES"),
163170
m_variableMatchedVars(t, "MATCHED_VARS"),
164171
m_variableFiles(t, "FILES"),
@@ -186,13 +193,19 @@ class TransactionAnchoredVariables {
186193
AnchoredVariable m_variableInboundDataError;
187194
AnchoredVariable m_variableMatchedVar;
188195
AnchoredVariable m_variableMatchedVarName;
196+
AnchoredVariable m_variableMultipartBoundaryQuoted;
197+
AnchoredVariable m_variableMultipartBoundaryWhiteSpace;
189198
AnchoredVariable m_variableMultipartCrlfLFLines;
190199
AnchoredVariable m_variableMultipartDataAfter;
200+
AnchoredVariable m_variableMultipartDataBefore;
191201
AnchoredVariable m_variableMultipartFileLimitExceeded;
192-
AnchoredVariable m_variableMultipartStrictError;
193202
AnchoredVariable m_variableMultipartHeaderFolding;
194-
AnchoredVariable m_variableMultipartInvalidQuoting;
195203
AnchoredVariable m_variableMultipartInvalidHeaderFolding;
204+
AnchoredVariable m_variableMultipartInvalidPart;
205+
AnchoredVariable m_variableMultipartInvalidQuoting;
206+
AnchoredVariable m_variableMultipartLFLine;
207+
AnchoredVariable m_variableMultipartMissingSemicolon;
208+
AnchoredVariable m_variableMultipartStrictError;
196209
AnchoredVariable m_variableMultipartUnmatchedBoundary;
197210
AnchoredVariable m_variableOutboundDataError;
198211
AnchoredVariable m_variablePathInfo;
@@ -233,8 +246,8 @@ class TransactionAnchoredVariables {
233246
AnchoredSetVariable m_variableFilesSizes;
234247
AnchoredSetVariable m_variableFilesNames;
235248
AnchoredSetVariable m_variableFilesTmpContent;
236-
AnchoredSetVariable m_variableMultiPartFileName;
237-
AnchoredSetVariable m_variableMultiPartName;
249+
AnchoredSetVariable m_variableMultipartFileName;
250+
AnchoredSetVariable m_variableMultipartName;
238251
AnchoredSetVariable m_variableMatchedVarsNames;
239252
AnchoredSetVariable m_variableMatchedVars;
240253
AnchoredSetVariable m_variableFiles;

src/macro_expansion.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,10 @@ std::string MacroExpansion::expand(const std::string& input,
270270
variableValue = transaction->m_variableFilesTmpContent.resolveFirst(var);
271271
}
272272
else if (compareStrNoCase(col, "MULTIPART_FILENAME")) {
273-
variableValue = transaction->m_variableMultiPartFileName.resolveFirst(var);
273+
variableValue = transaction->m_variableMultipartFileName.resolveFirst(var);
274274
}
275275
else if (compareStrNoCase(col, "MULTIPART_NAME")) {
276-
variableValue = transaction->m_variableMultiPartName.resolveFirst(var);
276+
variableValue = transaction->m_variableMultipartName.resolveFirst(var);
277277
}
278278
else if (compareStrNoCase(col, "MATCHED_VARS_NAMES")) {
279279
variableValue = transaction->m_variableMatchedVarsNames.resolveFirst(var);

0 commit comments

Comments
 (0)