Sometime in the last couple of weeks the following change was made to
s3_clnt.c

698,699c699
<       if (s->hit && (s->session->cipher != c))
---
>       if (s->hit && (s->session->cipher_id != c->id))

The only problem is that at this point in time the cipher_id field of
the SSL_SESSION has not been set.  Therefore, this test fails.

If you do not trust the pointer comparison (and I wouldn't) the
following change does work

  if (s->hit && (s->session->cipher->id != c->id))

It is interesting to note that in i2d_SSL_SESSION() the following code
is used to determine the cipher id:


        if (in->cipher == NULL)
                l=in->cipher_id;
        else
                l=in->cipher->id;

This leads me to believe the proper change should look like:

        if (s->session->cipher == NULL)
                id=s->session->cipher_id;
        else
                id=s->session->cipher->id;
        if (s->hit && (id != c->id))

I do wonder why the SSL_SESSION cipher_id field is not consistently
set when the cipher itself is set.




 Jeffrey Altman * Volunteer Developer      Kermit 95 2.1 GUI available now!!!
 The Kermit Project @ Columbia University  SSH, Secure Telnet, Secure FTP, HTTP
 http://www.kermit-project.org/            Secured with MIT Kerberos, SRP, and 
 [EMAIL PROTECTED]               OpenSSL.

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

Reply via email to