From f82f6509531f824be6fb102651c570352f7a016d Mon Sep 17 00:00:00 2001 From: Peter Gerber Date: Thu, 16 Mar 2017 21:36:43 +0000 Subject: [PATCH] Panic if lock managed by `locking_function` is doubly unlocked Trying to unlock an unlocked lock is always an error and should be treated as such. This is related to #597. --- openssl-sys/src/libressl.rs | 2 +- openssl-sys/src/ossl10x.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openssl-sys/src/libressl.rs b/openssl-sys/src/libressl.rs index 40490cd0f..dc3bfe11e 100644 --- a/openssl-sys/src/libressl.rs +++ b/openssl-sys/src/libressl.rs @@ -576,7 +576,7 @@ unsafe extern fn locking_function(mode: c_int, n: c_int, _file: *const c_char, if mode & ::CRYPTO_LOCK != 0 { (*GUARDS)[n as usize] = Some(mutex.lock().unwrap()); } else { - &(*GUARDS)[n as usize].take(); + &(*GUARDS)[n as usize].take().expect("lock already unlocked"); } } diff --git a/openssl-sys/src/ossl10x.rs b/openssl-sys/src/ossl10x.rs index 0ffe38508..fade0f999 100644 --- a/openssl-sys/src/ossl10x.rs +++ b/openssl-sys/src/ossl10x.rs @@ -719,7 +719,7 @@ unsafe extern fn locking_function(mode: c_int, n: c_int, _file: *const c_char, if mode & ::CRYPTO_LOCK != 0 { (*GUARDS)[n as usize] = Some(mutex.lock().unwrap()); } else { - &(*GUARDS)[n as usize].take(); + &(*GUARDS)[n as usize].take().expect("lock already unlocked"); } } -- GitLab