码迷,mamicode.com
首页 > 其他好文 > 详细

openssl的CRYPTO_set_locking_callback

时间:2015-09-07 15:38:09      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

openssl可以在多线程环境下使用,但前提是向openssl提供线程锁设施,通过CRYPTO_set_locking_callback设置。

在一些复杂软件环境环境中,可能存在多个上层模块同时使用openssl,并且都通过CRYPTO_set_locking_callback设置锁设施,如果出现这种情况,就悲剧了,例如:

xxx.exe - curl - openssl

            \ qtnetworks - openssl

上面的例子是xxx.exe依赖curl及qtnetwork,curl和qtnetwork都使用CRYPTO_set_locking_callback设置锁设施。

类似的问题在openssl的bugtrack里面也有人反映,但openssl没有正面回应这个问题,所以这种情况还是需要开发者自己解决。

http://rt.openssl.org/Ticket/Display.html?id=2293&user=guest&pass=guest

 

解决方法

1.参考openssl CRYPTO_thread_setup函数自己实现锁,屏蔽外界CRYPTO_set_locking_callback调用;

或者

2.在xxx.exe内hook openssl CRYPTO_set_locking_callback,实现线程安全,不重复设置逻辑。

openssl的CRYPTO_set_locking_callback

标签:

原文地址:http://www.cnblogs.com/rickerliang/p/4788975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!