From 60bd053095e7709c6da498f138116ec0acb7535f Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Wed, 25 Sep 2019 02:01:48 +0300 Subject: [PATCH] Pass setup_code to dc_continue_key_transfer as &str --- deltachat-ffi/src/lib.rs | 4 +++- examples/repl/cmdline.rs | 8 +------- src/dc_imex.rs | 10 +++------- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/deltachat-ffi/src/lib.rs b/deltachat-ffi/src/lib.rs index 76491351e..aec335d13 100644 --- a/deltachat-ffi/src/lib.rs +++ b/deltachat-ffi/src/lib.rs @@ -1573,7 +1573,9 @@ pub unsafe extern "C" fn dc_continue_key_transfer( } let ffi_context = &*context; ffi_context - .with_inner(|ctx| dc_imex::dc_continue_key_transfer(ctx, msg_id, setup_code) as libc::c_int) + .with_inner(|ctx| { + dc_imex::dc_continue_key_transfer(ctx, msg_id, as_str(setup_code)) as libc::c_int + }) .unwrap_or(0) } diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 315a4942e..54b7b0242 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -327,11 +327,6 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E arg1.strdup() as *const _ }; let arg2 = args.next().unwrap_or_default(); - let arg2_c = if arg2.is_empty() { - std::ptr::null() - } else { - arg2.strdup() as *const _ - }; match arg0 { "help" | "?" => match arg1 { @@ -451,7 +446,7 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E !arg1.is_empty() && !arg2.is_empty(), "Arguments expected" ); - if !dc_continue_key_transfer(context, arg1.parse()?, arg2_c) { + if !dc_continue_key_transfer(context, arg1.parse()?, &arg2) { bail!("Continue key transfer failed"); } } @@ -1001,7 +996,6 @@ pub unsafe fn dc_cmdline(context: &Context, line: &str) -> Result<(), failure::E } free(arg1_c as *mut _); - free(arg2_c as *mut _); Ok(()) } diff --git a/src/dc_imex.rs b/src/dc_imex.rs index cc984e0ba..cabbd9b1d 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -253,12 +253,8 @@ pub fn dc_create_setup_code(_context: &Context) -> String { ret } -pub unsafe fn dc_continue_key_transfer( - context: &Context, - msg_id: u32, - setup_code: *const libc::c_char, -) -> bool { - if msg_id <= 9i32 as libc::c_uint || setup_code.is_null() { +pub unsafe fn dc_continue_key_transfer(context: &Context, msg_id: u32, setup_code: &str) -> bool { + if msg_id <= 9i32 as libc::c_uint { return false; } @@ -275,7 +271,7 @@ pub unsafe fn dc_continue_key_transfer( if let Some(filename) = msg.get_file(context) { if let Ok(buf) = dc_read_file(context, filename) { - let norm_sc = CString::yolo(dc_normalize_setup_code(as_str(setup_code))); + let norm_sc = CString::yolo(dc_normalize_setup_code(setup_code)); let armored_key = dc_decrypt_setup_file(context, norm_sc.as_ptr(), buf.as_ptr().cast()); if armored_key.is_null() { warn!(context, "Cannot decrypt Autocrypt Setup Message.",);