diff --git a/openssl/src/bio.rs b/openssl/src/bio.rs index 96a63d19c..1595f89f1 100644 --- a/openssl/src/bio.rs +++ b/openssl/src/bio.rs @@ -63,7 +63,11 @@ impl MemBio { unsafe { let mut ptr = ptr::null_mut(); let len = ffi::BIO_get_mem_data(self.0, &mut ptr); - slice::from_raw_parts(ptr as *const _ as *const _, len as usize) + if len == 0 { + &[] + } else { + slice::from_raw_parts(ptr as *const _ as *const _, len as usize) + } } } @@ -83,3 +87,14 @@ cfg_if! { } } } + +#[cfg(test)] +mod tests { + use super::MemBio; + + #[test] + fn test_mem_bio_get_buf_empty() { + let b = MemBio::new().unwrap(); + assert_eq!(b.get_buf(), &[]); + } +}