diff options
| author | Steven Fackler <[email protected]> | 2017-07-25 20:32:04 -0700 |
|---|---|---|
| committer | Steven Fackler <[email protected]> | 2017-07-25 20:35:29 -0700 |
| commit | 82b1a12f356e828acc7d4824f316f16d77d6ae83 (patch) | |
| tree | 374aefbd788c9aa69f5587df076c35291b2f76cb /openssl-sys/src | |
| parent | Always apt-get update (diff) | |
| download | rust-openssl-82b1a12f356e828acc7d4824f316f16d77d6ae83.tar.xz rust-openssl-82b1a12f356e828acc7d4824f316f16d77d6ae83.zip | |
Abort on bad unlock and safe core dumps
Diffstat (limited to 'openssl-sys/src')
| -rw-r--r-- | openssl-sys/src/ossl10x.rs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/openssl-sys/src/ossl10x.rs b/openssl-sys/src/ossl10x.rs index a0fdb396..771dc528 100644 --- a/openssl-sys/src/ossl10x.rs +++ b/openssl-sys/src/ossl10x.rs @@ -2,6 +2,7 @@ use std::sync::{Mutex, MutexGuard}; use std::sync::{Once, ONCE_INIT}; use std::mem; use std::ptr; +use std::process; use libc::{c_int, c_char, c_void, c_long, c_uchar, size_t, c_uint, c_ulong}; #[cfg(not(ossl101))] @@ -746,7 +747,10 @@ unsafe extern "C" fn locking_function(mode: c_int, n: c_int, _file: *const c_cha if mode & ::CRYPTO_LOCK != 0 { (*GUARDS)[n as usize] = Some(mutex.lock().unwrap()); } else { - &(*GUARDS)[n as usize].take().expect("lock already unlocked"); + if let None = &(*GUARDS)[n as usize].take() { + println!("lock {} already unlocked", n); + process::abort(); + } } } |