try fix #677 (this fixes only a test) -- seems like we passed pointers into Rust strings to code that was expecting null-terminated strings. Now do proper "strdup()" and free. The real proper fix is to make dc_split_armored_string into a rust-string function and do away with all c-pointers.

This commit is contained in:
holger krekel
2019-10-05 14:37:56 +02:00
parent 93f0f5ccae
commit 07b32241bd

View File

@@ -978,16 +978,17 @@ mod tests {
let mut setupcodebegin = ptr::null(); let mut setupcodebegin = ptr::null();
let mut preferencrypt = ptr::null(); let mut preferencrypt = ptr::null();
let mut buf_1 = S_EM_SETUPFILE.to_string();
unsafe { unsafe {
assert!(dc_split_armored_data( let buf_1 = S_EM_SETUPFILE.strdup();
buf_1.as_mut_ptr().cast(), let res = dc_split_armored_data(
buf_1,
&mut headerline, &mut headerline,
&mut setupcodebegin, &mut setupcodebegin,
&mut preferencrypt, &mut preferencrypt,
ptr::null_mut(), ptr::null_mut(),
)); );
libc::free(buf_1 as *mut libc::c_void);
assert!(res);
} }
assert_eq!(headerline, "-----BEGIN PGP MESSAGE-----"); assert_eq!(headerline, "-----BEGIN PGP MESSAGE-----");
assert!(!setupcodebegin.is_null()); assert!(!setupcodebegin.is_null());
@@ -998,18 +999,20 @@ mod tests {
assert!(preferencrypt.is_null()); assert!(preferencrypt.is_null());
let mut setup_file = S_EM_SETUPFILE.to_string(); let mut setup_file = S_EM_SETUPFILE.to_string();
let mut decrypted = unsafe { let decrypted = unsafe {
decrypt_setup_file(context, S_EM_SETUPCODE, setup_file.as_bytes_mut()).unwrap() decrypt_setup_file(context, S_EM_SETUPCODE, setup_file.as_bytes_mut()).unwrap()
}; };
unsafe { unsafe {
let buf1 = decrypted.strdup();
assert!(dc_split_armored_data( assert!(dc_split_armored_data(
decrypted.as_mut_ptr().cast(), buf1,
&mut headerline, &mut headerline,
&mut setupcodebegin, &mut setupcodebegin,
&mut preferencrypt, &mut preferencrypt,
ptr::null_mut(), ptr::null_mut(),
)); ));
libc::free(buf1 as *mut libc::c_void);
} }
assert_eq!(headerline, "-----BEGIN PGP PRIVATE KEY BLOCK-----"); assert_eq!(headerline, "-----BEGIN PGP PRIVATE KEY BLOCK-----");