[prev in list] [next in list] [prev in thread] [next in thread]
List: openssl-cvs
Subject: cvs commit: openssl/ssl s23_meth.c s2_meth.c s3_meth.c t1_meth.c
From: bodo () openssl ! org
Date: 2002-09-26 15:52:38
[Download RAW message or body]
bodo 26-Sep-2002 17:52:38
Modified: . CHANGES
ssl s23_meth.c s2_meth.c s3_meth.c t1_meth.c
Log:
fix more race conditions
Submitted by: "Patrick McCormick" <patrick@tellme.com>
PR: 262
Revision Changes Path
1.1066 +4 -4 openssl/CHANGES
Index: CHANGES
===================================================================
RCS file: /e/openssl/cvs/openssl/CHANGES,v
retrieving revision 1.1065
retrieving revision 1.1066
diff -u -r1.1065 -r1.1066
--- CHANGES 2002/09/25 15:38:47 1.1065
+++ CHANGES 2002/09/26 15:52:23 1.1066
@@ -1928,10 +1928,10 @@
[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(),
+ SSLv23_method(), SSLv23_client_method(), SSLv23_server_method(),
+ SSLv2_method(), SSLv2_client_method(), SSLv2_server_method(),
+ SSLv3_method(), SSLv3_client_method(), SSLv3_server_method(),
+ TLSv1_method(), TLSv1_client_method(), TLSv1_server_method(),
ssl2_get_cipher_by_char(),
ssl3_get_cipher_by_char().
[Patrick McCormick <patrick@tellme.com>, Bodo Moeller]
1.8 +13 -6 openssl/ssl/s23_meth.c
1.11 +13 -6 openssl/ssl/s2_meth.c
1.7 +13 -6 openssl/ssl/s3_meth.c
1.7 +14 -6 openssl/ssl/t1_meth.c
Index: s23_meth.c
===================================================================
RCS file: /e/openssl/cvs/openssl/ssl/s23_meth.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- s23_meth.c 2001/03/02 12:17:57 1.7
+++ s23_meth.c 2002/09/26 15:52:34 1.8
@@ -80,12 +80,19 @@
if (init)
{
- memcpy((char *)&SSLv23_data,(char *)sslv23_base_method(),
- sizeof(SSL_METHOD));
- SSLv23_data.ssl_connect=ssl23_connect;
- SSLv23_data.ssl_accept=ssl23_accept;
- SSLv23_data.get_ssl_method=ssl23_get_method;
- init=0;
+ CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
+
+ if (init)
+ {
+ memcpy((char *)&SSLv23_data,(char *)sslv23_base_method(),
+ sizeof(SSL_METHOD));
+ SSLv23_data.ssl_connect=ssl23_connect;
+ SSLv23_data.ssl_accept=ssl23_accept;
+ SSLv23_data.get_ssl_method=ssl23_get_method;
+ init=0;
+ }
+
+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
}
return(&SSLv23_data);
}
Index: s2_meth.c
===================================================================
RCS file: /e/openssl/cvs/openssl/ssl/s2_meth.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- s2_meth.c 2001/02/20 08:12:00 1.10
+++ s2_meth.c 2002/09/26 15:52:34 1.11
@@ -77,12 +77,19 @@
if (init)
{
- memcpy((char *)&SSLv2_data,(char *)sslv2_base_method(),
- sizeof(SSL_METHOD));
- SSLv2_data.ssl_connect=ssl2_connect;
- SSLv2_data.ssl_accept=ssl2_accept;
- SSLv2_data.get_ssl_method=ssl2_get_method;
- init=0;
+ CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
+
+ if (init)
+ {
+ memcpy((char *)&SSLv2_data,(char *)sslv2_base_method(),
+ sizeof(SSL_METHOD));
+ SSLv2_data.ssl_connect=ssl2_connect;
+ SSLv2_data.ssl_accept=ssl2_accept;
+ SSLv2_data.get_ssl_method=ssl2_get_method;
+ init=0;
+ }
+
+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
}
return(&SSLv2_data);
}
Index: s3_meth.c
===================================================================
RCS file: /e/openssl/cvs/openssl/ssl/s3_meth.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- s3_meth.c 1999/04/26 16:42:56 1.6
+++ s3_meth.c 2002/09/26 15:52:34 1.7
@@ -76,12 +76,19 @@
if (init)
{
- memcpy((char *)&SSLv3_data,(char *)sslv3_base_method(),
- sizeof(SSL_METHOD));
- SSLv3_data.ssl_connect=ssl3_connect;
- SSLv3_data.ssl_accept=ssl3_accept;
- SSLv3_data.get_ssl_method=ssl3_get_method;
- init=0;
+ CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
+
+ if (init)
+ {
+ memcpy((char *)&SSLv3_data,(char *)sslv3_base_method(),
+ sizeof(SSL_METHOD));
+ SSLv3_data.ssl_connect=ssl3_connect;
+ SSLv3_data.ssl_accept=ssl3_accept;
+ SSLv3_data.get_ssl_method=ssl3_get_method;
+ init=0;
+ }
+
+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
}
return(&SSLv3_data);
}
Index: t1_meth.c
===================================================================
RCS file: /e/openssl/cvs/openssl/ssl/t1_meth.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- t1_meth.c 1999/04/26 16:42:57 1.6
+++ t1_meth.c 2002/09/26 15:52:34 1.7
@@ -76,13 +76,21 @@
if (init)
{
- memcpy((char *)&TLSv1_data,(char *)tlsv1_base_method(),
- sizeof(SSL_METHOD));
- TLSv1_data.ssl_connect=ssl3_connect;
- TLSv1_data.ssl_accept=ssl3_accept;
- TLSv1_data.get_ssl_method=tls1_get_method;
- init=0;
+ CRYPTO_w_lock(CRYPTO_LOCK_SSL_METHOD);
+
+ if (init)
+ {
+ memcpy((char *)&TLSv1_data,(char *)tlsv1_base_method(),
+ sizeof(SSL_METHOD));
+ TLSv1_data.ssl_connect=ssl3_connect;
+ TLSv1_data.ssl_accept=ssl3_accept;
+ TLSv1_data.get_ssl_method=tls1_get_method;
+ init=0;
+ }
+
+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL_METHOD);
}
+
return(&TLSv1_data);
}
______________________________________________________________________
OpenSSL Project http://www.openssl.org
CVS Repository Commit List openssl-cvs@openssl.org
Automated List Manager majordomo@openssl.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic