correctly handle optional string parameters

one of the downsides of going via the C API here - on has to be careful to no
accidentally drop CStrings while also wanting to use them via pointers..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2024-05-16 10:59:27 +02:00
parent 1e75997eaa
commit cafa0d9741

View File

@ -71,11 +71,18 @@ fn create_pbs_backup_task(args: BackupVmaToPbsArgs) -> Result<*mut ProxmoxBackup
let pbs_password_cstr = CString::new(args.pbs_password)?;
let fingerprint_cstr = CString::new(args.fingerprint)?;
let keyfile_cstr = args.keyfile.map(|v| CString::new(v).unwrap());
let keyfile_ptr = keyfile_cstr.map(|v| v.as_ptr()).unwrap_or(ptr::null());
let keyfile_ptr = keyfile_cstr
.as_ref()
.map(|v| v.as_ptr())
.unwrap_or(ptr::null());
let key_password_cstr = args.key_password.map(|v| CString::new(v).unwrap());
let key_password_ptr = key_password_cstr.map(|v| v.as_ptr()).unwrap_or(ptr::null());
let key_password_ptr = key_password_cstr
.as_ref()
.map(|v| v.as_ptr())
.unwrap_or(ptr::null());
let master_keyfile_cstr = args.master_keyfile.map(|v| CString::new(v).unwrap());
let master_keyfile_ptr = master_keyfile_cstr
.as_ref()
.map(|v| v.as_ptr())
.unwrap_or(ptr::null());