zoukankan      html  css  js  c++  java
  • openssl的CRYPTO_set_locking_callback

    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,实现线程安全,不重复设置逻辑。

  • 相关阅读:
    【转载】如何学JavaScript?前辈的经验之谈
    javascript基础学习心得01
    CSS之浮动
    HTML5基础学习心得
    如何使用HTML5的canvas属性
    HTML标记语言
    HTML+CSS学习
    线性表
    (2)协程之 greenlet模块
    (1)协程之理论
  • 原文地址:https://www.cnblogs.com/rickerliang/p/4788975.html
Copyright © 2011-2022 走看看