- backported 099d5414e9
.patch
slighty modified to match rspamd OBS-URL: https://build.opensuse.org/package/show/server:mail/rspamd?expand=0&rev=68
This commit is contained in:
parent
de4d73a4d7
commit
d98b7898fe
178
099d5414e97244ec44cf46b14cd176b3a3dc52e3.patch
Normal file
178
099d5414e97244ec44cf46b14cd176b3a3dc52e3.patch
Normal file
@ -0,0 +1,178 @@
|
||||
From 099d5414e97244ec44cf46b14cd176b3a3dc52e3 Mon Sep 17 00:00:00 2001
|
||||
From: Viktor Kirilov <vik.kirilov@gmail.com>
|
||||
Date: Sun, 21 Mar 2021 18:12:59 +0200
|
||||
Subject: [PATCH] fixed #473 - SIGSTKSZ is no longer a constant in glibc 2.34+
|
||||
so now the alternative stack memory is always dinamically allocated (even for
|
||||
older glibc versions where SIGSTKSZ is still a constant)
|
||||
|
||||
---
|
||||
doctest/doctest.h | 31 +++++++++++++++++++++++++------
|
||||
doctest/parts/doctest.cpp | 31 +++++++++++++++++++++++++------
|
||||
2 files changed, 50 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/contrib/doctest/doctest/doctest.h b/doctest/doctest.h
|
||||
index 88917eff..3ec64708 100644
|
||||
--- a/contrib/doctest/doctest/doctest.h
|
||||
+++ b/contrib/doctest/doctest/doctest.h
|
||||
@@ -4171,7 +4171,9 @@ namespace {
|
||||
#if !defined(DOCTEST_CONFIG_POSIX_SIGNALS) && !defined(DOCTEST_CONFIG_WINDOWS_SEH)
|
||||
struct FatalConditionHandler
|
||||
{
|
||||
- void reset() {}
|
||||
+ static void reset() {}
|
||||
+ static void allocateAltStackMem() {}
|
||||
+ static void freeAltStackMem() {}
|
||||
};
|
||||
#else // DOCTEST_CONFIG_POSIX_SIGNALS || DOCTEST_CONFIG_WINDOWS_SEH
|
||||
|
||||
@@ -4224,6 +4226,9 @@ namespace {
|
||||
std::exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+ static void allocateAltStackMem() {}
|
||||
+ static void freeAltStackMem() {}
|
||||
+
|
||||
FatalConditionHandler() {
|
||||
isSet = true;
|
||||
// 32k seems enough for doctest to handle stack overflow,
|
||||
@@ -4341,7 +4346,8 @@ namespace {
|
||||
static bool isSet;
|
||||
static struct sigaction oldSigActions[DOCTEST_COUNTOF(signalDefs)];
|
||||
static stack_t oldSigStack;
|
||||
- static char altStackMem[4 * SIGSTKSZ];
|
||||
+ static size_t altStackSize;
|
||||
+ static char* altStackMem;
|
||||
|
||||
static void handleSignal(int sig) {
|
||||
const char* name = "<unknown signal>";
|
||||
@@ -4357,11 +4363,19 @@ namespace {
|
||||
raise(sig);
|
||||
}
|
||||
|
||||
+ static void allocateAltStackMem() {
|
||||
+ altStackMem = new char[altStackSize];
|
||||
+ }
|
||||
+
|
||||
+ static void freeAltStackMem() {
|
||||
+ delete[] altStackMem;
|
||||
+ }
|
||||
+
|
||||
FatalConditionHandler() {
|
||||
isSet = true;
|
||||
stack_t sigStack;
|
||||
sigStack.ss_sp = altStackMem;
|
||||
- sigStack.ss_size = sizeof(altStackMem);
|
||||
+ sigStack.ss_size = altStackSize;
|
||||
sigStack.ss_flags = 0;
|
||||
sigaltstack(&sigStack, &oldSigStack);
|
||||
struct sigaction sa = {};
|
||||
@@ -4386,10 +4400,11 @@ namespace {
|
||||
}
|
||||
};
|
||||
|
||||
- bool FatalConditionHandler::isSet = false;
|
||||
+ bool FatalConditionHandler::isSet = false;
|
||||
struct sigaction FatalConditionHandler::oldSigActions[DOCTEST_COUNTOF(signalDefs)] = {};
|
||||
- stack_t FatalConditionHandler::oldSigStack = {};
|
||||
- char FatalConditionHandler::altStackMem[] = {};
|
||||
+ stack_t FatalConditionHandler::oldSigStack = {};
|
||||
+ size_t FatalConditionHandler::altStackSize = 4 * SIGSTKSZ;
|
||||
+ char* FatalConditionHandler::altStackMem = nullptr;
|
||||
|
||||
#endif // DOCTEST_PLATFORM_WINDOWS
|
||||
#endif // DOCTEST_CONFIG_POSIX_SIGNALS || DOCTEST_CONFIG_WINDOWS_SEH
|
||||
@@ -6282,7 +6297,11 @@ int Context::run() {
|
||||
p->cout = &fstr;
|
||||
}
|
||||
|
||||
+ FatalConditionHandler::allocateAltStackMem();
|
||||
+
|
||||
auto cleanup_and_return = [&]() {
|
||||
+ FatalConditionHandler::freeAltStackMem();
|
||||
+
|
||||
if(fstr.is_open())
|
||||
fstr.close();
|
||||
|
||||
diff --git a/contrib/doctest/doctest/parts/doctest.cpp b/doctest/parts/doctest.cpp
|
||||
index 2b334374..8c09a4f3 100644
|
||||
--- a/contrib/doctest/doctest/parts/doctest.cpp
|
||||
+++ b/contrib/doctest/doctest/parts/doctest.cpp
|
||||
@@ -1461,7 +1461,9 @@ namespace {
|
||||
#if !defined(DOCTEST_CONFIG_POSIX_SIGNALS) && !defined(DOCTEST_CONFIG_WINDOWS_SEH)
|
||||
struct FatalConditionHandler
|
||||
{
|
||||
- void reset() {}
|
||||
+ static void reset() {}
|
||||
+ static void allocateAltStackMem() {}
|
||||
+ static void freeAltStackMem() {}
|
||||
};
|
||||
#else // DOCTEST_CONFIG_POSIX_SIGNALS || DOCTEST_CONFIG_WINDOWS_SEH
|
||||
|
||||
@@ -1514,6 +1516,9 @@ namespace {
|
||||
std::exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+ static void allocateAltStackMem() {}
|
||||
+ static void freeAltStackMem() {}
|
||||
+
|
||||
FatalConditionHandler() {
|
||||
isSet = true;
|
||||
// 32k seems enough for doctest to handle stack overflow,
|
||||
@@ -1631,7 +1636,8 @@ namespace {
|
||||
static bool isSet;
|
||||
static struct sigaction oldSigActions[DOCTEST_COUNTOF(signalDefs)];
|
||||
static stack_t oldSigStack;
|
||||
- static char altStackMem[4 * SIGSTKSZ];
|
||||
+ static size_t altStackSize;
|
||||
+ static char* altStackMem;
|
||||
|
||||
static void handleSignal(int sig) {
|
||||
const char* name = "<unknown signal>";
|
||||
@@ -1647,11 +1653,19 @@ namespace {
|
||||
raise(sig);
|
||||
}
|
||||
|
||||
+ static void allocateAltStackMem() {
|
||||
+ altStackMem = new char[altStackSize];
|
||||
+ }
|
||||
+
|
||||
+ static void freeAltStackMem() {
|
||||
+ delete[] altStackMem;
|
||||
+ }
|
||||
+
|
||||
FatalConditionHandler() {
|
||||
isSet = true;
|
||||
stack_t sigStack;
|
||||
sigStack.ss_sp = altStackMem;
|
||||
- sigStack.ss_size = sizeof(altStackMem);
|
||||
+ sigStack.ss_size = altStackSize;
|
||||
sigStack.ss_flags = 0;
|
||||
sigaltstack(&sigStack, &oldSigStack);
|
||||
struct sigaction sa = {};
|
||||
@@ -1676,10 +1690,11 @@ namespace {
|
||||
}
|
||||
};
|
||||
|
||||
- bool FatalConditionHandler::isSet = false;
|
||||
+ bool FatalConditionHandler::isSet = false;
|
||||
struct sigaction FatalConditionHandler::oldSigActions[DOCTEST_COUNTOF(signalDefs)] = {};
|
||||
- stack_t FatalConditionHandler::oldSigStack = {};
|
||||
- char FatalConditionHandler::altStackMem[] = {};
|
||||
+ stack_t FatalConditionHandler::oldSigStack = {};
|
||||
+ size_t FatalConditionHandler::altStackSize = 4 * SIGSTKSZ;
|
||||
+ char* FatalConditionHandler::altStackMem = nullptr;
|
||||
|
||||
#endif // DOCTEST_PLATFORM_WINDOWS
|
||||
#endif // DOCTEST_CONFIG_POSIX_SIGNALS || DOCTEST_CONFIG_WINDOWS_SEH
|
||||
@@ -3572,7 +3587,11 @@ int Context::run() {
|
||||
p->cout = &fstr;
|
||||
}
|
||||
|
||||
+ FatalConditionHandler::allocateAltStackMem();
|
||||
+
|
||||
auto cleanup_and_return = [&]() {
|
||||
+ FatalConditionHandler::freeAltStackMem();
|
||||
+
|
||||
if(fstr.is_open())
|
||||
fstr.close();
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 30 17:58:39 UTC 2021 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- backported https://github.com/onqtam/doctest/commit/099d5414e97244ec44cf46b14cd176b3a3dc52e3.patch
|
||||
slighty modified to match rspamd
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 17 22:31:22 UTC 2021 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
|
11
rspamd.spec
11
rspamd.spec
@ -69,6 +69,7 @@ Patch0: rspamd-conf.patch
|
||||
Patch1: rspamd-after-redis-target.patch
|
||||
Patch2: https://github.com/rspamd/rspamd/commit/309bb213cf.patch
|
||||
Patch3: https://github.com/rspamd/rspamd/commit/cdedeb9f4.patch
|
||||
Patch4: https://github.com/onqtam/doctest/commit/099d5414e97244ec44cf46b14cd176b3a3dc52e3.patch
|
||||
# PATCH-FIX-UPSTREAM - https://github.com/rspamd/rspamd/issues/3656
|
||||
%if !0%{?is_opensuse}
|
||||
# because 80-check-malware-scan-clamav triggered in SLE-15-SP2
|
||||
@ -120,10 +121,14 @@ BuildRequires: pkgconfig(systemd)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(libzstd)
|
||||
|
||||
%if 0%{?suse_version} < 1500
|
||||
Requires: lua51-LPeg
|
||||
%else
|
||||
%if 0%{?suse_version} >= 1550
|
||||
Requires: lua54-lpeg
|
||||
%else
|
||||
%if 0%{?suse_version} >= 1500
|
||||
Requires: lua53-lpeg
|
||||
%else
|
||||
Requires: lua51-LPeg
|
||||
%endif
|
||||
%endif
|
||||
%if 0%{?with split_out_client}
|
||||
Requires: rspamd-client = %{version}
|
||||
|
Loading…
x
Reference in New Issue
Block a user