Loading src/common/crypto.c +11 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ const char crypto_c_id[] = "$Id$"; #include <openssl/dh.h> #include <openssl/rsa.h> #include <openssl/dh.h> #include <openssl/conf.h> #include <stdlib.h> #include <assert.h> Loading Loading @@ -220,16 +221,26 @@ crypto_global_init(int useAccel) return 0; } /** Free crypto resources held by this thread. */ void crypto_thread_cleanup(void) { ERR_remove_state(0); } /** Uninitialize the crypto library. Return 0 on success, -1 on failure. */ int crypto_global_cleanup(void) { EVP_cleanup(); //ERR_remove_state(0); ERR_free_strings(); #ifndef NO_ENGINES ENGINE_cleanup(); #endif CONF_modules_unload(1); CRYPTO_cleanup_all_ex_data(); #ifdef TOR_IS_MULTITHREADED if (_n_openssl_mutexes) { int n = _n_openssl_mutexes; Loading src/common/crypto.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ typedef struct crypto_dh_env_t crypto_dh_env_t; /* global state */ int crypto_global_init(int hardwareAccel); void crypto_thread_cleanup(void); int crypto_global_cleanup(void); /* environment setup */ Loading src/or/cpuworker.c +1 −0 Original line number Diff line number Diff line Loading @@ -290,6 +290,7 @@ cpuworker_main(void *data) if (last_onion_key) crypto_free_pk_env(last_onion_key); tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); return 0; /* windows wants this function to return an int */ } Loading src/or/dns.c +3 −0 Original line number Diff line number Diff line Loading @@ -793,12 +793,14 @@ dnsworker_main(void *data) info(LD_EXIT,"(Error on %d was %s)", fd, tor_socket_strerror(tor_socket_errno(fd))); } tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); } if (address_len && read_all(fd, address, address_len, 1) != address_len) { err(LD_BUG,"read hostname failed. Child exiting."); tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); } address[address_len] = 0; /* null terminate it */ Loading Loading @@ -826,6 +828,7 @@ dnsworker_main(void *data) if (write_all(fd, answer, 5, 1) != 5) { err(LD_NET,"writing answer failed. Child exiting."); tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); } } Loading Loading
src/common/crypto.c +11 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ const char crypto_c_id[] = "$Id$"; #include <openssl/dh.h> #include <openssl/rsa.h> #include <openssl/dh.h> #include <openssl/conf.h> #include <stdlib.h> #include <assert.h> Loading Loading @@ -220,16 +221,26 @@ crypto_global_init(int useAccel) return 0; } /** Free crypto resources held by this thread. */ void crypto_thread_cleanup(void) { ERR_remove_state(0); } /** Uninitialize the crypto library. Return 0 on success, -1 on failure. */ int crypto_global_cleanup(void) { EVP_cleanup(); //ERR_remove_state(0); ERR_free_strings(); #ifndef NO_ENGINES ENGINE_cleanup(); #endif CONF_modules_unload(1); CRYPTO_cleanup_all_ex_data(); #ifdef TOR_IS_MULTITHREADED if (_n_openssl_mutexes) { int n = _n_openssl_mutexes; Loading
src/common/crypto.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ typedef struct crypto_dh_env_t crypto_dh_env_t; /* global state */ int crypto_global_init(int hardwareAccel); void crypto_thread_cleanup(void); int crypto_global_cleanup(void); /* environment setup */ Loading
src/or/cpuworker.c +1 −0 Original line number Diff line number Diff line Loading @@ -290,6 +290,7 @@ cpuworker_main(void *data) if (last_onion_key) crypto_free_pk_env(last_onion_key); tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); return 0; /* windows wants this function to return an int */ } Loading
src/or/dns.c +3 −0 Original line number Diff line number Diff line Loading @@ -793,12 +793,14 @@ dnsworker_main(void *data) info(LD_EXIT,"(Error on %d was %s)", fd, tor_socket_strerror(tor_socket_errno(fd))); } tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); } if (address_len && read_all(fd, address, address_len, 1) != address_len) { err(LD_BUG,"read hostname failed. Child exiting."); tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); } address[address_len] = 0; /* null terminate it */ Loading Loading @@ -826,6 +828,7 @@ dnsworker_main(void *data) if (write_all(fd, answer, 5, 1) != 5) { err(LD_NET,"writing answer failed. Child exiting."); tor_close_socket(fd); crypto_thread_cleanup(); spawn_exit(); } } Loading