outlk_autodiscover: store url as String

This commit is contained in:
Alexander Krotov
2019-10-06 02:02:47 +03:00
parent a6608513ac
commit 6fbde21995

View File

@@ -29,7 +29,7 @@ pub unsafe fn outlk_autodiscover(
param_in: &LoginParam, param_in: &LoginParam,
) -> Option<LoginParam> { ) -> Option<LoginParam> {
let mut xml_raw: *mut libc::c_char = ptr::null_mut(); let mut xml_raw: *mut libc::c_char = ptr::null_mut();
let mut url = url__.strdup(); let mut url = url__.to_string();
let mut outlk_ad = outlk_autodiscover_t { let mut outlk_ad = outlk_autodiscover_t {
in_0: param_in, in_0: param_in,
out: LoginParam::new(), out: LoginParam::new(),
@@ -47,12 +47,14 @@ pub unsafe fn outlk_autodiscover(
ok_to_continue = true; ok_to_continue = true;
break; break;
} }
libc::memset( libc::memset(
&mut outlk_ad as *mut outlk_autodiscover_t as *mut libc::c_void, &mut outlk_ad as *mut outlk_autodiscover_t as *mut libc::c_void,
0, 0,
::std::mem::size_of::<outlk_autodiscover_t>(), ::std::mem::size_of::<outlk_autodiscover_t>(),
); );
xml_raw = read_autoconf_file(context, as_str(url));
xml_raw = read_autoconf_file(context, &url);
if xml_raw.is_null() { if xml_raw.is_null() {
ok_to_continue = false; ok_to_continue = false;
break; break;
@@ -96,8 +98,7 @@ pub unsafe fn outlk_autodiscover(
ok_to_continue = true; ok_to_continue = true;
break; break;
} }
free(url as *mut libc::c_void); url = as_str(outlk_ad.config[5usize]).to_string();
url = dc_strdup(outlk_ad.config[5usize]);
outlk_clean_config(&mut outlk_ad); outlk_clean_config(&mut outlk_ad);
free(xml_raw as *mut libc::c_void); free(xml_raw as *mut libc::c_void);
@@ -113,14 +114,12 @@ pub unsafe fn outlk_autodiscover(
{ {
let r = outlk_ad.out.to_string(); let r = outlk_ad.out.to_string();
warn!(context, "Bad or incomplete autoconfig: {}", r,); warn!(context, "Bad or incomplete autoconfig: {}", r,);
free(url as *mut libc::c_void);
free(xml_raw as *mut libc::c_void); free(xml_raw as *mut libc::c_void);
outlk_clean_config(&mut outlk_ad); outlk_clean_config(&mut outlk_ad);
return None; return None;
} }
} }
free(url as *mut libc::c_void);
free(xml_raw as *mut libc::c_void); free(xml_raw as *mut libc::c_void);
outlk_clean_config(&mut outlk_ad); outlk_clean_config(&mut outlk_ad);
if out_null { if out_null {