Fix native build: Android libc compat, SQLite FFI types, unused var
ober
6634dfcedd1cb767cc42e61866a1ee26ee9d3717
--- a/jerboa-native-rs/src/secure_mem.rs +++ b/jerboa-native-rs/src/secure_mem.rs @@ -53,8 +53,9 @@ pub extern "C" fn jerboa_secure_free(ptr: *mut u8, size: usize) -> i32 { ffi_wrap(|| { if ptr.is_null() { return -1; } - // Wipe — explicit_bzero is guaranteed not to be optimized away - unsafe { libc::explicit_bzero(ptr as *mut _, size); } + // Wipe — volatile write guaranteed not to be optimized away + unsafe { std::ptr::write_bytes(ptr, 0, size); } + std::sync::atomic::compiler_fence(std::sync::atomic::Ordering::SeqCst); // Unlock unsafe { libc::munlock(ptr as *const _, size); } @@ -72,7 +73,8 @@ pub extern "C" fn jerboa_secure_free(ptr: *mut u8, size: usize) -> i32 { pub extern "C" fn jerboa_secure_wipe(ptr: *mut u8, size: usize) -> i32 { ffi_wrap(|| { if ptr.is_null() { return -1; } - unsafe { libc::explicit_bzero(ptr as *mut _, size); } + unsafe { std::ptr::write_bytes(ptr, 0, size); } + std::sync::atomic::compiler_fence(std::sync::atomic::Ordering::SeqCst); 0 }) } --- a/jerboa-native-rs/src/sqlite.rs +++ b/jerboa-native-rs/src/sqlite.rs @@ -138,7 +138,7 @@ pub extern "C" fn jerboa_sqlite_prepare( let rc = unsafe { rusqlite::ffi::sqlite3_prepare_v2( entry.raw, - sql as *const i8, + sql as *const u8, sql_len as i32, &mut raw_stmt, std::ptr::null_mut(), @@ -211,7 +211,7 @@ pub extern "C" fn jerboa_sqlite_bind_text( let rc = unsafe { rusqlite::ffi::sqlite3_bind_text( entry.raw, index, - text as *const i8, text_len as i32, + text as *const u8, text_len as i32, rusqlite::ffi::SQLITE_TRANSIENT(), ) }; --- a/jerboa-native-rs/src/tls.rs +++ b/jerboa-native-rs/src/tls.rs @@ -809,7 +809,7 @@ pub extern "C" fn jerboa_tls_connect_mtls( Ok(f) => f, Err(e) => { set_last_error(format!("open server CA: {}", e)); return 0; } }; - let ca_certs: Vec<CertificateDer<'static>> = rustls_pemfile::certs(&mut std::io::BufReader::new(ca_file)) + let _ca_certs: Vec<CertificateDer<'static>> = rustls_pemfile::certs(&mut std::io::BufReader::new(ca_file)) .filter_map(|r| r.ok()) .collect();