Hi,

Coverity thinks that in this sequence b->ptr is used
after free and I have to agree:

        case BIO_C_SET_SSL:
                if (ssl != NULL)
                        ssl_free(b);            // MARCUS: frees also b->ptr 
                b->shutdown=(int)num;
                ssl=(SSL *)ptr;
                ((BIO_SSL *)b->ptr)->ssl=ssl;   // MARCUS: Derferences freed 
b->ptr
                bio=SSL_get_rbio(ssl);
                if (bio != NULL)
                        {
                        if (b->next_bio != NULL)
                                BIO_push(bio,b->next_bio);
                        b->next_bio=bio;
                        CRYPTO_add(&bio->references,1,CRYPTO_LOCK_BIO);
                        }
                b->init=1;
                break;

Not sure what was really intended in the second commented line.

Ciao, MArcus

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

Reply via email to