mirror of
https://github.com/owasp-modsecurity/ModSecurity.git
synced 2025-08-14 05:45:59 +03:00
Removed unnecessary lock to call acmp_process_quick in Pm::evaluate
- This was introduced in commit 119a6fc & 7d786b3 because of a potential issue reported in #1573. - The ACMP tree structure is initialized when the operator is initialized. - During transaction execution the ACMP tree structure is only 'read' while traversing the tree (in acmp_process_quick) so this is safe for use in a multi-threaded environment.
This commit is contained in:
parent
718d121ee3
commit
8d6b185856
17
configure.ac
17
configure.ac
@ -316,23 +316,6 @@ AC_ARG_ENABLE(parser-generation,
|
|||||||
[buildParser=false]
|
[buildParser=false]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Mutex
|
|
||||||
AC_ARG_ENABLE(mutex-on-pm,
|
|
||||||
[AS_HELP_STRING([--enable-mutex-on-pm],[Treats pm operations as a critical section])],
|
|
||||||
|
|
||||||
[case "${enableval}" in
|
|
||||||
yes) mutexPm=true ;;
|
|
||||||
no) mutexPm=false ;;
|
|
||||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mutex-on-pm) ;;
|
|
||||||
esac],
|
|
||||||
|
|
||||||
[mutexPm=false]
|
|
||||||
)
|
|
||||||
if test "$mutexPm" == "true"; then
|
|
||||||
MODSEC_MUTEX_ON_PM="-DMUTEX_ON_PM=1"
|
|
||||||
AC_SUBST(MODSEC_MUTEX_ON_PM)
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if test $buildParser = true; then
|
if test $buildParser = true; then
|
||||||
AC_PROG_YACC
|
AC_PROG_YACC
|
||||||
|
@ -321,7 +321,6 @@ libmodsecurity_la_CPPFLAGS = \
|
|||||||
$(GEOIP_CFLAGS) \
|
$(GEOIP_CFLAGS) \
|
||||||
$(GLOBAL_CPPFLAGS) \
|
$(GLOBAL_CPPFLAGS) \
|
||||||
$(MODSEC_NO_LOGS) \
|
$(MODSEC_NO_LOGS) \
|
||||||
$(MODSEC_MUTEX_ON_PM) \
|
|
||||||
$(YAJL_CFLAGS) \
|
$(YAJL_CFLAGS) \
|
||||||
$(LMDB_CFLAGS) \
|
$(LMDB_CFLAGS) \
|
||||||
$(PCRE_CFLAGS) \
|
$(PCRE_CFLAGS) \
|
||||||
|
@ -85,14 +85,7 @@ bool Pm::evaluate(Transaction *transaction, RuleWithActions *rule,
|
|||||||
pt.parser = m_p;
|
pt.parser = m_p;
|
||||||
pt.ptr = NULL;
|
pt.ptr = NULL;
|
||||||
const char *match = NULL;
|
const char *match = NULL;
|
||||||
#ifdef MODSEC_MUTEX_ON_PM
|
|
||||||
{
|
|
||||||
const std::lock_guard lock(m_mutex);
|
|
||||||
#endif
|
|
||||||
rc = acmp_process_quick(&pt, &match, input.c_str(), input.length());
|
rc = acmp_process_quick(&pt, &match, input.c_str(), input.length());
|
||||||
#ifdef MODSEC_MUTEX_ON_PM
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (rc >= 0 && transaction) {
|
if (rc >= 0 && transaction) {
|
||||||
std::string match_(match?match:"");
|
std::string match_(match?match:"");
|
||||||
|
@ -53,12 +53,6 @@ class Pm : public Operator {
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
ACMP *m_p;
|
ACMP *m_p;
|
||||||
|
|
||||||
#ifdef MODSEC_MUTEX_ON_PM
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::mutex m_mutex;
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user