mirror of
https://github.com/chatmail/core.git
synced 2026-05-07 08:56:30 +03:00
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:
17
src/imex.rs
17
src/imex.rs
@@ -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-----");
|
||||||
|
|||||||
Reference in New Issue
Block a user