Fix native build: Android libc compat, SQLite FFI types, unused var

ober

6634dfcedd1cb767cc42e61866a1ee26ee9d3717

diff --git a/jerboa-native-rs/src/secure_mem.rs b/jerboa-native-rs/src/secure_mem.rs
index 7fc9a99..595fbc4 100644
--- 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
     })
 }
diff --git a/jerboa-native-rs/src/sqlite.rs b/jerboa-native-rs/src/sqlite.rs
index d4cc955..69106fc 100644
--- 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(),
             )
         };
diff --git a/jerboa-native-rs/src/tls.rs b/jerboa-native-rs/src/tls.rs
index ac2fbf4..7b5c413 100644
--- 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();