- Fix build on aarch64 [1] - Not broken in i386 [2] - WSREP only on amd64 PR: 230682 [1], 230027 [2] Submitted by: Naram Qashat <cyberbotx cyberbotx com> [1] Reported by: <dewayne heuristicsystems com.au> [2] Security: 909be51b-9b3b-11e8-add2-b499baebfeaf MFH: 2018Q4
50 lines
1.1 KiB
Text
50 lines
1.1 KiB
Text
MDEV-15961: Fix stacktraces under FreeBSD
|
|
|
|
https://jira.mariadb.org/browse/MDEV-15961
|
|
--- mysys/stacktrace.c.orig 2018-07-02 07:34:11 UTC
|
|
+++ mysys/stacktrace.c
|
|
@@ -34,19 +34,19 @@
|
|
#include <execinfo.h>
|
|
#endif
|
|
|
|
+#ifdef __linux__
|
|
#define PTR_SANE(p) ((p) && (char*)(p) >= heap_start && (char*)(p) <= heap_end)
|
|
-
|
|
static char *heap_start;
|
|
-
|
|
-#if(defined HAVE_BSS_START) && !(defined __linux__)
|
|
extern char *__bss_start;
|
|
-#endif
|
|
+#else
|
|
+#define PTR_SANE(p) (p)
|
|
+#endif /* __linux */
|
|
|
|
void my_init_stacktrace()
|
|
{
|
|
-#if(defined HAVE_BSS_START) && !(defined __linux__)
|
|
+#ifdef __linux__
|
|
heap_start = (char*) &__bss_start;
|
|
-#endif
|
|
+#endif /* __linux__ */
|
|
}
|
|
|
|
#ifdef __linux__
|
|
@@ -149,15 +149,16 @@ static int safe_print_str(const char *ad
|
|
|
|
int my_safe_print_str(const char* val, size_t max_len)
|
|
{
|
|
+#ifdef __linux__
|
|
+/* Only needed by the linux version of PTR_SANE */
|
|
char *heap_end;
|
|
|
|
-#ifdef __linux__
|
|
// Try and make use of /proc filesystem to safely print memory contents.
|
|
if (!safe_print_str(val, max_len))
|
|
return 0;
|
|
-#endif
|
|
|
|
heap_end= (char*) sbrk(0);
|
|
+#endif
|
|
|
|
if (!PTR_SANE(val))
|
|
{
|