nginx-module-modsecurity: added support for older libmaxminddb versions.
The v3.0.5 version of libmodsecurity requires at least libmaxminddb 1.4.x,
while a number of still supported platforms such as Ubuntu 18.04 "bionic",
Debian 10 "buster", or RHEL/CentOS 7/8 have quite outdated versions.
See https://github.com/SpiderLabs/ModSecurity/issues/2254 for details.
diff --git a/contrib/src/modsecurity/Makefile b/contrib/src/modsecurity/Makefile
index 374cb7d..9ed4583 100644
--- a/contrib/src/modsecurity/Makefile
+++ b/contrib/src/modsecurity/Makefile
@@ -19,6 +19,7 @@
modsecurity: modsecurity-v$(MODSECURITY_VERSION).tar.gz .sum-modsecurity
$(UNPACK)
+ $(APPLY) $(SRC)/modsecurity/older-libmaxminddb-compatibility.patch
$(MOVE)
.modsecurity: modsecurity
diff --git a/contrib/src/modsecurity/older-libmaxminddb-compatibility.patch b/contrib/src/modsecurity/older-libmaxminddb-compatibility.patch
new file mode 100644
index 0000000..58a67be
--- /dev/null
+++ b/contrib/src/modsecurity/older-libmaxminddb-compatibility.patch
@@ -0,0 +1,24 @@
+# see https://github.com/SpiderLabs/ModSecurity/issues/2254
+--- a/src/utils/geo_lookup.h 2021-08-16 13:53:16.361372841 +0000
++++ b/src/utils/geo_lookup.h 2021-08-16 13:53:51.209561652 +0000
+@@ -50,7 +50,7 @@
+ void cleanUp();
+
+ bool lookup(const std::string& target, Transaction *transaction,
+- std::function<bool(int, const std::string &)> debug) const;
++ std::function<bool(int, const std::string &)> debug);
+
+ private:
+ GeoLookup() :
+--- a/src/utils/geo_lookup.cc 2021-08-16 13:53:22.615406728 +0000
++++ b/src/utils/geo_lookup.cc 2021-08-16 13:54:15.959695749 +0000
+@@ -113,7 +113,7 @@
+
+
+ bool GeoLookup::lookup(const std::string& target, Transaction *trans,
+- std::function<bool(int, const std::string &)> debug) const {
++ std::function<bool(int, const std::string &)> debug) {
+
+ if (m_version == NOT_LOADED) {
+ if (debug) {
+
diff --git a/debian/Makefile.module-modsecurity b/debian/Makefile.module-modsecurity
index 9ef1732..17ebfa4 100644
--- a/debian/Makefile.module-modsecurity
+++ b/debian/Makefile.module-modsecurity
@@ -14,6 +14,8 @@
MODULE_SOURCES_modsecurity= modsecurity-v$(MODSECURITY_VERSION).tar.gz \
modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz
+MODULE_PATCHES_modsecurity= $(CONTRIB)/src/modsecurity/older-libmaxminddb-compatibility.patch
+
MODULE_CONFARGS_modsecurity= --add-dynamic-module=$(MODSRC_PREFIX)modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)
.deps-module-modsecurity:
diff --git a/rpm/SPECS/Makefile.module-modsecurity b/rpm/SPECS/Makefile.module-modsecurity
index bf4674a..4b5bad0 100644
--- a/rpm/SPECS/Makefile.module-modsecurity
+++ b/rpm/SPECS/Makefile.module-modsecurity
@@ -14,6 +14,8 @@
MODULE_SOURCES_modsecurity= modsecurity-v$(MODSECURITY_VERSION).tar.gz \
modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH).tar.xz
+MODULE_PATCHES_modsecurity= $(CONTRIB)/src/modsecurity/older-libmaxminddb-compatibility.patch
+
MODULE_CONFARGS_modsecurity= --add-dynamic-module=modsecurity-nginx-$(MODSECURITY_NGINX_GITHASH)
.deps-module-modsecurity: