Loading CHANGES +6 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,12 @@ (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes). [Bodo Moeller] *) Fix race condition in SSLv3_client_method(). [Bodo Moeller] *) Fix initialization code race conditions in SSLv23_client_method(), SSLv23_server_method(), SSLv2_client_method(), SSLv2_server_method(), SSLv3_client_method(), SSLv3_server_method(), TLSv1_client_method(), TLSv1_server_method(). [Patrick McCormick <patrick@tellme.com>, Bodo Moeller] *) Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after the cached sessions are flushed, as the remove_cb() might use ex_data Loading crypto/cryptlib.c +1 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ static const char* lock_names[CRYPTO_NUM_LOCKS] = "ssl_session", "ssl_sess_cert", "ssl", /* "ssl_method", */ "rand", "rand2", "debug_malloc", Loading crypto/crypto.h +28 −25 Original line number Diff line number Diff line Loading @@ -111,6 +111,9 @@ extern "C" { #define CRYPTO_LOCK_SSL_SESSION 14 #define CRYPTO_LOCK_SSL_SESS_CERT 15 #define CRYPTO_LOCK_SSL 16 /* for binary compatibility between 0.9.6 minor versions, * reuse an existing lock (later version use a new one): */ # define CRYPTO_LOCK_SSL_SESSION CRYPTO_LOCK_SSL_CERT #define CRYPTO_LOCK_RAND 17 #define CRYPTO_LOCK_RAND2 18 #define CRYPTO_LOCK_MALLOC 19 Loading ssl/s23_clnt.c +4 −0 Original line number Diff line number Diff line Loading @@ -87,11 +87,15 @@ SSL_METHOD *SSLv23_client_method(void) if (init) { CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); memcpy((char *)&SSLv23_client_data, (char *)sslv23_base_method(),sizeof(SSL_METHOD)); SSLv23_client_data.ssl_connect=ssl23_connect; SSLv23_client_data.get_ssl_method=ssl23_get_client_method; init=0; CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); } return(&SSLv23_client_data); } Loading ssl/s23_srvr.c +4 −0 Original line number Diff line number Diff line Loading @@ -139,11 +139,15 @@ SSL_METHOD *SSLv23_server_method(void) if (init) { CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); memcpy((char *)&SSLv23_server_data, (char *)sslv23_base_method(),sizeof(SSL_METHOD)); SSLv23_server_data.ssl_accept=ssl23_accept; SSLv23_server_data.get_ssl_method=ssl23_get_server_method; init=0; CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); } return(&SSLv23_server_data); } Loading Loading
CHANGES +6 −2 Original line number Diff line number Diff line Loading @@ -8,8 +8,12 @@ (the SSL 3.0 and TLS 1.0 specifications allow any length up to 32 bytes). [Bodo Moeller] *) Fix race condition in SSLv3_client_method(). [Bodo Moeller] *) Fix initialization code race conditions in SSLv23_client_method(), SSLv23_server_method(), SSLv2_client_method(), SSLv2_server_method(), SSLv3_client_method(), SSLv3_server_method(), TLSv1_client_method(), TLSv1_server_method(). [Patrick McCormick <patrick@tellme.com>, Bodo Moeller] *) Reorder cleanup sequence in SSL_CTX_free(): only remove the ex_data after the cached sessions are flushed, as the remove_cb() might use ex_data Loading
crypto/cryptlib.c +1 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,7 @@ static const char* lock_names[CRYPTO_NUM_LOCKS] = "ssl_session", "ssl_sess_cert", "ssl", /* "ssl_method", */ "rand", "rand2", "debug_malloc", Loading
crypto/crypto.h +28 −25 Original line number Diff line number Diff line Loading @@ -111,6 +111,9 @@ extern "C" { #define CRYPTO_LOCK_SSL_SESSION 14 #define CRYPTO_LOCK_SSL_SESS_CERT 15 #define CRYPTO_LOCK_SSL 16 /* for binary compatibility between 0.9.6 minor versions, * reuse an existing lock (later version use a new one): */ # define CRYPTO_LOCK_SSL_SESSION CRYPTO_LOCK_SSL_CERT #define CRYPTO_LOCK_RAND 17 #define CRYPTO_LOCK_RAND2 18 #define CRYPTO_LOCK_MALLOC 19 Loading
ssl/s23_clnt.c +4 −0 Original line number Diff line number Diff line Loading @@ -87,11 +87,15 @@ SSL_METHOD *SSLv23_client_method(void) if (init) { CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); memcpy((char *)&SSLv23_client_data, (char *)sslv23_base_method(),sizeof(SSL_METHOD)); SSLv23_client_data.ssl_connect=ssl23_connect; SSLv23_client_data.get_ssl_method=ssl23_get_client_method; init=0; CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); } return(&SSLv23_client_data); } Loading
ssl/s23_srvr.c +4 −0 Original line number Diff line number Diff line Loading @@ -139,11 +139,15 @@ SSL_METHOD *SSLv23_server_method(void) if (init) { CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD); memcpy((char *)&SSLv23_server_data, (char *)sslv23_base_method(),sizeof(SSL_METHOD)); SSLv23_server_data.ssl_accept=ssl23_accept; SSLv23_server_data.get_ssl_method=ssl23_get_server_method; init=0; CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD); } return(&SSLv23_server_data); } Loading