Hack around an unpatched OpenSSL issue

Why backport fixes to your LTS version? Seems like a lot of work, I
guess!

Closes #1133
This commit is contained in:
Steven Fackler 2019-07-18 22:43:23 -04:00
parent 5f0e5e2e51
commit 8d2e9e783d
1 changed files with 14 additions and 0 deletions

View File

@ -3884,11 +3884,25 @@ cfg_if! {
)
}
} else {
use std::sync::{Once, ONCE_INIT};
unsafe fn get_new_idx(f: ffi::CRYPTO_EX_free) -> c_int {
// hack around https://rt.openssl.org/Ticket/Display.html?id=3710&user=guest&pass=guest
static ONCE: Once = ONCE_INIT;
ONCE.call_once(|| {
ffi::SSL_CTX_get_ex_new_index(0, ptr::null_mut(), None, None, None);
});
ffi::SSL_CTX_get_ex_new_index(0, ptr::null_mut(), None, None, Some(f))
}
unsafe fn get_new_ssl_idx(f: ffi::CRYPTO_EX_free) -> c_int {
// hack around https://rt.openssl.org/Ticket/Display.html?id=3710&user=guest&pass=guest
static ONCE: Once = ONCE_INIT;
ONCE.call_once(|| {
ffi::SSL_get_ex_new_index(0, ptr::null_mut(), None, None, None);
});
ffi::SSL_get_ex_new_index(0, ptr::null_mut(), None, None, Some(f))
}
}