Skip to content
  1. May 23, 2016
  2. May 22, 2016
  3. May 21, 2016
  4. May 20, 2016
    • Matt Caswell's avatar
      Fix Windows 64 bit crashes · fcb318c6
      Matt Caswell authored
      The function InitOnceExceuteOnce is the best way to support the
      implementation of CRYPTO_THREAD_run_once() on Windows. Unfortunately
      WinXP doesn't have it. To get around that we had two different
      implementations: one for WinXP and one for later versions. Which one was
      used was based on the value of _WIN32_WINNT.
      
      This approach was starting to cause problems though because other parts of
      OpenSSL assume _WIN32_WINNT is going to be 0x0501 and crashes were
      occurring dependant on include file ordering. In addition a conditional
      based on _WIN32_WINNT had made its way into a public header file through
      commit 5c4328f0
      
      . This is problematic because the value of this macro can
      vary between OpenSSL build time and application build time.
      
      The simplest solution to this mess is just to always use the WinXP version
      of CRYPTO_THREAD_run_once(). Its perhaps slightly sub-optimal but probably
      not noticably.
      
      GitHub Issue #1086
      
      Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
      fcb318c6