diff options
author | Jakob Unterwurzacher | 2016-05-05 00:02:04 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2016-05-05 00:09:08 +0200 |
commit | cf29ce37627fd6ba4416dd9eb5e56bed44128131 (patch) | |
tree | 6f1e66d0d421ffd5b305a2d1a5315ac9ea84edc9 /internal/stupidgcm | |
parent | 906172938afcf40418d78d825ee4cd2b9363d643 (diff) |
stupidgcm: set dummy locking callback.v0.10-rc2
In general, OpenSSL is only threadsafe if you provide a locking function
through CRYPTO_set_locking_callback. However, the GCM operations that
stupidgcm uses never call that function.
To guard against that ever changing, set a dummy locking callback
that crashes the app.
Diffstat (limited to 'internal/stupidgcm')
-rw-r--r-- | internal/stupidgcm/locking.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/internal/stupidgcm/locking.go b/internal/stupidgcm/locking.go new file mode 100644 index 0000000..06add56 --- /dev/null +++ b/internal/stupidgcm/locking.go @@ -0,0 +1,26 @@ +package stupidgcm + +// In general, OpenSSL is only threadsafe if you provide a locking function +// through CRYPTO_set_locking_callback. However, the GCM operations that +// stupidgcm uses never call that function. Additionally, the manual locking +// has been removed completely in openssl 1.1.0. + +/* +#include <openssl/evp.h> +#include <stdio.h> + +static void dummy_callback(int mode, int n, const char *file, int line) { + printf("stupidgcm: thread locking is not implemented and should not be " + "needed. Please upgrade openssl.\n"); + // panic + *((int*)0)=0; +} +static void set_dummy_callback() { + CRYPTO_set_locking_callback(dummy_callback); +} +*/ +import "C" + +func init() { + C.set_dummy_callback() +} |