mail/rspamd: Backport important fixes from the upstream

This commit is contained in:
Vsevolod Stakhov 2022-11-14 21:17:10 +00:00
parent 835b479670
commit 7a34813aa2
4 changed files with 54 additions and 0 deletions

View File

@ -1,5 +1,6 @@
PORTNAME= rspamd
PORTVERSION= 3.4
PORTREVISION= 1
CATEGORIES= mail
MAINTAINER= vsevolod@FreeBSD.org

View File

@ -0,0 +1,21 @@
diff --git a/src/libserver/hyperscan_tools.cxx b/src/libserver/hyperscan_tools.cxx
index 6187208a9..96366067d 100644
--- src/libserver/hyperscan_tools.cxx
+++ src/libserver/hyperscan_tools.cxx
@@ -306,7 +306,15 @@ auto load_cached_hs_file(const char *fname, std::int64_t offset = 0) -> tl::expe
msg_debug_hyperscan_lambda("multipattern: create new database in %s; %Hz size",
tmpfile_pattern.data(), unserialized_size);
void *buf;
- posix_memalign(&buf, 16, unserialized_size);
+#ifdef HAVE_GETPAGESIZE
+ auto page_size = getpagesize();
+#else
+ auto page_size = sysconf(_SC_PAGESIZE);
+#endif
+ if (page_size == -1) {
+ page_size = 4096;
+ }
+ posix_memalign(&buf, page_size, unserialized_size);
if (buf == nullptr) {
return tl::make_unexpected(error {"Cannot allocate memory", errno, error_category::CRITICAL });
}

View File

@ -0,0 +1,22 @@
diff --git a/src/libutil/cxx/file_util.cxx b/src/libutil/cxx/file_util.cxx
index e3b3a2605..4536fa97b 100644
--- src/libutil/cxx/file_util.cxx
+++ src/libutil/cxx/file_util.cxx
@@ -198,7 +198,7 @@ auto raii_mmaped_file::mmap_shared(raii_file &&file,
}
/* Update stat on file to ensure it is up-to-date */
file.update_stat();
- map = mmap(nullptr, file.get_size() - offset, flags, MAP_SHARED, file.get_fd(), offset);
+ map = mmap(nullptr, (std::size_t)(file.get_size() - offset), flags, MAP_SHARED, file.get_fd(), offset);
if (map == MAP_FAILED) {
return tl::make_unexpected(error { fmt::format("cannot mmap file {}: {}",
@@ -206,7 +206,7 @@ auto raii_mmaped_file::mmap_shared(raii_file &&file,
}
- return raii_mmaped_file{std::move(file), map, file.get_size() - offset};
+ return raii_mmaped_file{std::move(file), map, (std::size_t)(file.get_size() - offset)};
}
auto raii_mmaped_file::mmap_shared(const char *fname, int open_flags,

View File

@ -13,5 +13,15 @@
You can edit %%ETCDIR%%/rspamd.newsyslog.conf
to change log file rotation configuration.
EOM
},
{ type: upgrade
maximum_version: 3.4
minimum_version: 3.3
message: <<EOM
Due to the issues with Hyperscan alignment, it is recommended to remove the
existing cached files that might cause troubles from /var/db/rspamd by using the
following command: "find /var/db/rspamd/ -type f -name '*.unser' -delete"
This action is needed merely for this particular upgrade.
EOM
}
]