Hi there! My code is:
let mut password: Vec<u8> = vec![118, 49, 48, 34, 232, 193, 1, 71, 249, 76, 132, 1, 155, 184, 92, 55, 137, 229, 130, 135, 100, 247, 164, 23, 224, 41, 49, 48, 88, 96, 74, 25, 239, 112, 99, 53, 251, 122, 173, 170, 210, 200, 88, 56, 194, 0];
let bytes: u32 = password.len().try_into().unwrap();
let mut blob = CRYPTOAPI_BLOB{cbData: bytes, pbData: password.as_mut_ptr()};
let mut new_blob: *mut CRYPTOAPI_BLOB = ptr::null_mut();
unsafe {
let res = CryptUnprotectData(&mut blob, ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), ptr::null_mut(), 0, new_blob);
println!("{}", res);
let err = GetLastError();
println!("Err: {}", err);
let data = *new_blob;
println!("Deferenced!");
let cb_data = data.cbData.try_into().unwrap();
let vec = Vec::from_raw_parts(data.pbData, cb_data, cb_data);
}
But there's segfault on line 10:
0
Err: 0
error: process didn't exit successfully: `target\debug\test.exe` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)