aboutsummaryrefslogtreecommitdiff
path: root/crypto/async/async.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2015-10-09 15:48:30 +0100
committerMatt Caswell <matt@openssl.org>2015-11-20 23:35:19 +0000
commit4abc76811a74b45c8bab1bbe3add4b58b374a04b (patch)
treea531035908ff6e2bbf713e0ea4a6e19fa1ce8beb /crypto/async/async.c
parent05a6347fec744bd11ef94dd2ac9f68b4f679de8e (diff)
downloadopenssl-4abc76811a74b45c8bab1bbe3add4b58b374a04b.zip
openssl-4abc76811a74b45c8bab1bbe3add4b58b374a04b.tar.gz
openssl-4abc76811a74b45c8bab1bbe3add4b58b374a04b.tar.bz2
Fix Linux crash
If config'd without -d (--debug), asynctest was crashing with: *** longjmp causes uninitialized stack frame *** This is because gcc will add certain checks for some functions (including longjmp). The checks assume you can only longjmp down the stack not up. However, if we are actually jumping to a different fibre then it can appear as if we are going up the stack when we are not really. This change disables the check. Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto/async/async.c')
-rw-r--r--crypto/async/async.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/crypto/async/async.c b/crypto/async/async.c
index 8fdff52..d08ac13 100644
--- a/crypto/async/async.c
+++ b/crypto/async/async.c
@@ -51,6 +51,14 @@
* ====================================================================
*/
+/*
+ * Without this we start getting longjmp crashes because it thinks we're jumping
+ * up the stack when in fact we are jumping to an entirely different stack. The
+ * cost of this is not having certain buffer overrun/underrun checks etc for
+ * this source file :-(
+ */
+#undef _FORTIFY_SOURCE
+
#include <openssl/err.h>
#include <openssl/async.h>
#include <string.h>