Hi!

There is one point confirmation. 

May I think the action on the trouble described in the following mail 
was done with the E-mail of following openssl-cvs (Show with URL)?

http://marc.theaimsgroup.com/?l=openssl-cvs&m=109870286615557&w=2

I use the Openssl0.9.7d in our project. 

Takurou Saitou.

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] Behalf Of Arnold Hendriks
> Sent: Monday, October 25, 2004 7:30 PM
> To: openssl-dev@openssl.org
> Subject: Race condition involving SSL_CTX_new
> 
> 
> Dear list,
> 
> I've been using the openssl libs for quite some time, and so far 
> they've always worked 
> fine. Recently, I've had to change my code to use different contexts 
> per connection 
> (due to easier key management being available in the SSL_CTX family), 
> and now I'm 
> hitting a race condition when starting the openssl libraries 
> (0.9.7d). Sporadically, the 
> following error appears:
> 
> SSL:error:140A90A1:SSL routines:SSL_CTX_new:library has no ciphers
> 
> Scanning through the google archive I saw that this problem was known 
> and that a fix 
> was made, but the fix was incorrect. Firstly, load_ciphers is only 
> called when 
> init_ciphers is set to 1. 
> 
> But the first thing load_ciphers does is setting init_ciphers to 0 - 
> a parallel running call 
> to this code (quite likely on my SMP machine):
> 
>       if (init_ciphers)
>               {
>               CRYPTO_w_lock(CRYPTO_LOCK_SSL);
>               if (init_ciphers) load_ciphers();
>               CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
>               }
> 
> will cause the second thread to skip load_ciphers, and thus continue 
> running without 
> having a completed init_ciphers call.
> 
> Moving the init_ciphers=0; statement to the end of load_ciphers would 
> fix that 
> problem, but would probably open up an even subtler race condition: 
> DCL may not be 
> safe on all platforms without proper memory barriers. It would 
> probably be safer to 
> remove this 'optimization' all together: SSL_CTX_new does a lot of memory 
> allocations already so the cost of hitting one more mutex should be 
> negligible?
> 
> The following patch should fix the race condition in SSL_CTX_new:
> 
> diff -ur openssl-0.9.7d-orig/ssl/ssl_ciph.c openssl-0.9.7d/ssl/ssl_ciph.c
> --- openssl-0.9.7d-orig/ssl/ssl_ciph.c  Mon Oct 25 11:53:33 2004
> +++ openssl-0.9.7d/ssl/ssl_ciph.c       Mon Oct 25 11:55:58 2004
> @@ -759,12 +759,9 @@
>          */
>         if (rule_str == NULL) return(NULL);
>  
> -       if (init_ciphers)
> -               {
> -               CRYPTO_w_lock(CRYPTO_LOCK_SSL);
> -               if (init_ciphers) load_ciphers();
> -               CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
> -               }
> +       CRYPTO_w_lock(CRYPTO_LOCK_SSL);
> +       if (init_ciphers) load_ciphers();
> +       CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
>  
>         /*
>          * To reduce the work to do we only want to process the compiled
> 
> 
> With this fix, I haven't been able to reproduce the race condition so far.
> 
> 
> With regards,
> Arnold Hendriks
> 
> -- 
> Arnold Hendriks <[EMAIL PROTECTED]>
> B-Lex Information Technologies <http://www.b-lex.com/>
> Postbus 545, 7500 AM Enschede, The Netherlands
> 
> B-Lex: +31 (0)53 4836543   
> Mobile: +31 (0)6 51710159
> MSN: [EMAIL PROTECTED]   
> ICQ: 86313731
> 
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> Development Mailing List                       openssl-dev@openssl.org
> Automated List Manager                           [EMAIL PROTECTED]
> 

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to