[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