You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.6 KiB

  1. --- a/lib/dns/openssl_link.c 2017-07-07 09:02:06.000000000 -0600
  2. +++ b/lib/dns/openssl_link.c 2017-08-07 10:23:18.886182931 -0600
  3. @@ -177,6 +177,14 @@ mem_realloc(void *ptr, size_t size FLARG
  4. #endif
  5. }
  6. +#if OPENSSL_VERSION_NUMBER >= 0x10000000L
  7. +static void
  8. +_set_thread_id(CRYPTO_THREADID *id)
  9. +{
  10. + CRYPTO_THREADID_set_numeric(id, pthread_self());
  11. +}
  12. +#endif
  13. +
  14. isc_result_t
  15. dst__openssl_init(const char *engine) {
  16. isc_result_t result;
  17. @@ -193,7 +203,7 @@ dst__openssl_init(const char *engine) {
  18. CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
  19. #endif
  20. CRYPTO_set_mem_functions(mem_alloc, mem_realloc, mem_free);
  21. -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
  22. +#if defined(OPENSSL_VERSION_NUMBER) || defined(LIBRESSL_VERSION_NUMBER)
  23. nlocks = CRYPTO_num_locks();
  24. locks = mem_alloc(sizeof(isc_mutex_t) * nlocks FILELINE);
  25. if (locks == NULL)
  26. @@ -202,7 +204,11 @@ dst__openssl_init(const char *engine) {
  27. if (result != ISC_R_SUCCESS)
  28. goto cleanup_mutexalloc;
  29. CRYPTO_set_locking_callback(lock_callback);
  30. +# if OPENSSL_VERSION_NUMBER >= 0x10000000L
  31. + CRYPTO_THREADID_set_callback(_set_thread_id);
  32. +# else
  33. CRYPTO_set_id_callback(id_callback);
  34. +# endif
  35. ERR_load_crypto_strings();
  36. #endif
  37. @@ -323,7 +335,9 @@ dst__openssl_destroy(void) {
  38. CRYPTO_cleanup_all_ex_data();
  39. #endif
  40. ERR_clear_error();
  41. -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
  42. +#if OPENSSL_VERSION >= 0x10000000L
  43. + ERR_remove_thread_state(NULL);
  44. +#elif OPENSSL_VERSION_NUMBER < 0x10000000L || defined(LIBRESSL_VERSION_NUMBER)
  45. ERR_remove_state(0);
  46. #endif
  47. ERR_free_strings();