Hello,

We have been testing OpenLDAP with the latest OpenSSL 1.0.1e, and we encountered a segfault issue.

libldap calls CRYPTO_set_locking_callback( tlso_locking_cb) where tlso_locking_cb is a function pointer in libldap address space. The problem occurs when libldap gets unloaded while application is still running. The current OpenLDAP implementation doesn't clear the locking callback function, and the program segfaults when OpenSSL trys to call the bogus callback function.

Clearing the callback function when libldap is unloaded seems an obvious thing to do, that can also be an issue if there is another library which is also using OpenSSL. If libldap clears the callback function, the application will not be thread safe thereafter.

Thus, I think the problem will be solved if the callback function (as wells as mutexes) is implemented inside OpenSSL. I found CRYPTO_thread_setup(void) in OpenSSL and that's exactly what we were looking for.

Is it possible to make CRYPTO_thread_setup() be publicly available?

Thank you,

-- misaki

misaki.miyash...@oracle.com
Oracle Solaris Security



______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to