[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:55:52
[Download RAW message or body]

bodo        26-Sep-2002 17:55:51

  Modified:    .        Tag: OpenSSL_0_9_6-stable CHANGES
               ssl      Tag: OpenSSL_0_9_6-stable 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
  No                   revision
  No                   revision
  1.618.2.179 +4 -4      openssl/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /e/openssl/cvs/openssl/CHANGES,v
  retrieving revision 1.618.2.178
  retrieving revision 1.618.2.179
  diff -u -r1.618.2.178 -r1.618.2.179
  --- CHANGES	2002/09/25 15:34:55	1.618.2.178
  +++ CHANGES	2002/09/26 15:54:53	1.618.2.179
  @@ -9,10 +9,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]
  
  
  No                   revision
  No                   revision
  1.6.4.2   +13 -6     openssl/ssl/s23_meth.c
  1.9.4.1   +13 -6     openssl/ssl/s2_meth.c
  1.6.4.1   +13 -6     openssl/ssl/s3_meth.c
  1.6.4.1   +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.6.4.1
  retrieving revision 1.6.4.2
  diff -u -r1.6.4.1 -r1.6.4.2
  --- s23_meth.c	2001/03/05 14:52:27	1.6.4.1
  +++ s23_meth.c	2002/09/26 15:55:45	1.6.4.2
  @@ -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.9
  retrieving revision 1.9.4.1
  diff -u -r1.9 -r1.9.4.1
  --- s2_meth.c	2000/01/16 21:09:58	1.9
  +++ s2_meth.c	2002/09/26 15:55:45	1.9.4.1
  @@ -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.6.4.1
  diff -u -r1.6 -r1.6.4.1
  --- s3_meth.c	1999/04/26 16:42:56	1.6
  +++ s3_meth.c	2002/09/26 15:55:45	1.6.4.1
  @@ -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.6.4.1
  diff -u -r1.6 -r1.6.4.1
  --- t1_meth.c	1999/04/26 16:42:57	1.6
  +++ t1_meth.c	2002/09/26 15:55:46	1.6.4.1
  @@ -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