Implemented merge_boolean_value() for ConfigBoolean

This change makes the following directives to be merged properly:

SecRequestBodyAccess
SecResponseBodyAccess
SecXmlExternalEntity
SecUploadKeepFiles
SecTmpSaveUploadedFiles
This commit is contained in:
Andrei Belov
2018-12-25 18:33:30 +03:00
committed by Felipe Zimmerle
parent 2d11ff1a14
commit 161c256333

View File

@@ -37,6 +37,11 @@
#define CODEPAGE_SEPARATORS " \t\n\r" #define CODEPAGE_SEPARATORS " \t\n\r"
#define merge_boolean_value(to, from, default) \
if (to == PropertyNotSetConfigBoolean) { \
to = (from == PropertyNotSetConfigBoolean) ? default : from; \
}
#ifdef __cplusplus #ifdef __cplusplus
namespace modsecurity { namespace modsecurity {
@@ -348,25 +353,25 @@ class RulesProperties {
to->m_secRuleEngine = from->m_secRuleEngine; to->m_secRuleEngine = from->m_secRuleEngine;
} }
if (from->m_secRequestBodyAccess != PropertyNotSetConfigBoolean) { merge_boolean_value(to->m_secRequestBodyAccess,
to->m_secRequestBodyAccess = from->m_secRequestBodyAccess; from->m_secRequestBodyAccess,
} PropertyNotSetConfigBoolean);
if (from->m_secResponseBodyAccess != PropertyNotSetConfigBoolean) { merge_boolean_value(to->m_secResponseBodyAccess,
to->m_secResponseBodyAccess = from->m_secResponseBodyAccess; from->m_secResponseBodyAccess,
} PropertyNotSetConfigBoolean);
if (from->m_secXMLExternalEntity != PropertyNotSetConfigBoolean) { merge_boolean_value(to->m_secXMLExternalEntity,
to->m_secXMLExternalEntity = from->m_secXMLExternalEntity; from->m_secXMLExternalEntity,
} PropertyNotSetConfigBoolean);
if (from->m_uploadKeepFiles != PropertyNotSetConfigBoolean) { merge_boolean_value(to->m_uploadKeepFiles,
to->m_uploadKeepFiles = from->m_uploadKeepFiles; from->m_uploadKeepFiles,
} PropertyNotSetConfigBoolean);
if (from->m_tmpSaveUploadedFiles != PropertyNotSetConfigBoolean) { merge_boolean_value(to->m_tmpSaveUploadedFiles,
to->m_tmpSaveUploadedFiles = from->m_tmpSaveUploadedFiles; from->m_tmpSaveUploadedFiles,
} PropertyNotSetConfigBoolean);
to->m_requestBodyLimit.merge(&from->m_requestBodyLimit); to->m_requestBodyLimit.merge(&from->m_requestBodyLimit);
to->m_responseBodyLimit.merge(&from->m_responseBodyLimit); to->m_responseBodyLimit.merge(&from->m_responseBodyLimit);