[tor-commits] [tor/master] Isolate dmalloc/openssl bridge code to crypto.c
nickm at torproject.org
nickm at torproject.org
Fri Apr 7 13:59:42 UTC 2017
commit e7506c03cf7e3121fb33567452039eaccd1eea50
Author: Nick Mathewson <nickm at torproject.org>
Date: Sat Mar 25 11:27:50 2017 +0100
Isolate dmalloc/openssl bridge code to crypto.c
This makes it so main.c, and the rest of src/or, no longer need to
include any openssl headers.
---
src/common/crypto.c | 12 ++++++++++++
src/common/crypto.h | 4 ++++
src/or/main.c | 5 ++---
src/test/testing_common.c | 5 ++---
4 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/src/common/crypto.c b/src/common/crypto.c
index a5eb7b5..e1094ae 100644
--- a/src/common/crypto.c
+++ b/src/common/crypto.c
@@ -3459,3 +3459,15 @@ crypto_global_cleanup(void)
/** @} */
+#ifdef USE_DMALLOC
+/** Tell the crypto library to use Tor's allocation functions rather than
+ * calling libc's allocation functions directly. Return 0 on success, -1
+ * on failure. */
+int
+crypto_use_tor_alloc_functions(void)
+{
+ int r = CRYPTO_set_mem_ex_functions(tor_malloc_, tor_realloc_, tor_free_);
+ return r ? 0 : -1;
+}
+#endif
+
diff --git a/src/common/crypto.h b/src/common/crypto.h
index 62c78b5..c70d91c 100644
--- a/src/common/crypto.h
+++ b/src/common/crypto.h
@@ -131,6 +131,10 @@ int crypto_early_init(void) ATTR_WUR;
int crypto_global_init(int hardwareAccel,
const char *accelName,
const char *accelPath) ATTR_WUR;
+#ifdef USE_DMALLOC
+int crypto_use_tor_alloc_functions(void);
+#endif
+
void crypto_thread_cleanup(void);
int crypto_global_cleanup(void);
diff --git a/src/or/main.c b/src/or/main.c
index 5b73aea..4505879 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -104,7 +104,6 @@
#include "ext_orport.h"
#ifdef USE_DMALLOC
#include <dmalloc.h>
-#include <openssl/crypto.h>
#endif
#include "memarea.h"
#include "sandbox.h"
@@ -3617,8 +3616,8 @@ tor_main(int argc, char *argv[])
{
/* Instruct OpenSSL to use our internal wrappers for malloc,
realloc and free. */
- int r = CRYPTO_set_mem_ex_functions(tor_malloc_, tor_realloc_, tor_free_);
- tor_assert(r);
+ int r = crypto_use_tor_alloc_functions();
+ tor_assert(r == 0);
}
#endif
#ifdef NT_SERVICE
diff --git a/src/test/testing_common.c b/src/test/testing_common.c
index bb2bcbf..0e37e0d 100644
--- a/src/test/testing_common.c
+++ b/src/test/testing_common.c
@@ -38,7 +38,6 @@ const char tor_git_revision[] = "";
#ifdef USE_DMALLOC
#include <dmalloc.h>
-#include <openssl/crypto.h>
#include "main.h"
#endif
@@ -238,8 +237,8 @@ main(int c, const char **v)
#ifdef USE_DMALLOC
{
- int r = CRYPTO_set_mem_ex_functions(tor_malloc_, tor_realloc_, tor_free_);
- tor_assert(r);
+ int r = crypto_use_tor_alloc_functions();
+ tor_assert(r == 0);
}
#endif
More information about the tor-commits
mailing list