security: shrink native export surface
ober
fdf29f0f2fb5000e1f70367cb91622982caeb7f7
--- a/docs/ffi-audit.md +++ b/docs/ffi-audit.md @@ -39,12 +39,12 @@ Latest summary from `tools/ffi-audit-report.ss`: (native (rust-file-count 29) (c-file-count 5) - (no-mangle-exports 231) + (no-mangle-exports 196) (unsafe-sites 438) (unsafe-sites-with-nearby-safety-comment 5) (unsafe-sites-without-nearby-safety-comment 433) (unsafe-comment-review-sites 433) - (export-review-sites 231)) + (export-review-sites 196)) (vendor (jsqlite (path "vendor/jsqlite") (status accepted-risk-cve-gated))) (verdict needs-per-binding-review)) @@ -58,9 +58,10 @@ C/Rust files, Rust C ABI exports, pointer/width-sensitive bindings, blocking candidate calls, and unsafe Rust sites. `make native-export-review-check` keeps the actual C ABI export/caller map in `docs/reviews/2026-07-27-native-export-review.sexp` fresh; the current map has -225 actual exported functions, 183 tracked Scheme references, and 42 exports -with no tracked Scheme reference. The companion decision file marks 7 of those -as retained standalone C/binary-tooling exports and 35 as removal candidates. +190 actual exported functions, 183 tracked Scheme references, and 7 exports +with no tracked Scheme reference. The companion decision file marks all 7 as +retained standalone C/binary-tooling exports; the 35 prior removal candidates +had their C ABI export markers removed. The full report appends a provisional `hazards` list and `verdict` to every Scheme and Rust site. Scheme verdicts separate blocking calls missing `__collect_safe`, pointer/GC/ownership or @@ -82,7 +83,6 @@ Remaining work before closing K3-P1-01: - Add targeted scanner rules for null-return checks, integer width confusion, caller-supplied length trust, and bytevector pointer lifetime hazards. - Add `SAFETY:` invariant comments near Rust unsafe sites. -- Remove or wrap the 35 native export-review removal candidates. - Keep `vendor/jsqlite` in the TCB until consumers move to the Rust sqlite path. The accepted-risk decision is now recorded in `docs/reviews/2026-07-27-vendor-jsqlite-tcb.md`, and `make audit` runs --- a/docs/kimi3-security-recommmendations.md +++ b/docs/kimi3-security-recommmendations.md @@ -616,8 +616,10 @@ not started." `docs/reviews/2026-07-27-native-export-review.sexp` plus `docs/reviews/2026-07-27-native-export-decisions.sexp`, to keep the Rust C ABI export/caller map current and require a decision for each zero-caller - export. Remaining work: unsafe invariant comments and removing or wrapping - the 35 exports marked removal candidates. + export. The 35 exports previously marked removal candidates had their C ABI + export markers removed; the remaining zero-caller exports are the 7 + standalone C/binary-tooling helpers explicitly retained in the decision + file. Remaining work: unsafe invariant comments. ### K3-P1-02 — TOCTOU-safe filesystem capability checks **Serves:** G2. **Effort:** 1 week. --- a/docs/reviews/2026-07-27-native-export-decisions.sexp +++ b/docs/reviews/2026-07-27-native-export-decisions.sexp @@ -9,39 +9,4 @@ (export (symbol "embed_encrypt") (decision retain-standalone-c-abi) (reason "binary embedding and encrypted-boot support API, intentionally consumed outside Scheme source")) (export (symbol "embed_pbkdf2_sha256") (decision retain-standalone-c-abi) (reason "binary embedding and encrypted-boot support API, intentionally consumed outside Scheme source")) (export (symbol "embed_random_bytes") (decision retain-standalone-c-abi) (reason "binary embedding and encrypted-boot support API, intentionally consumed outside Scheme source")) - (export (symbol "embed_read_passphrase") (decision retain-standalone-c-abi) (reason "binary embedding and encrypted-boot support API, intentionally consumed outside Scheme source")) - (export (symbol "jerboa_aproc_close") (decision removal-candidate) (reason "no tracked Scheme caller; remove or add a wrapper before closing P1-01")) - (export (symbol "jerboa_aproc_dup") (decision removal-candidate) (reason "no tracked Scheme caller; remove or add a wrapper before closing P1-01")) - (export (symbol "jerboa_freebsd_is_traced") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if FreeBSD hardening wrapper lands")) - (export (symbol "jerboa_freebsd_process_count") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if FreeBSD hardening wrapper lands")) - (export (symbol "jerboa_hkdf_sha256") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if X25519 key-agreement wrapper lands")) - (export (symbol "jerboa_kill_probe") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if process-control wrapper lands")) - (export (symbol "jerboa_md5") (decision removal-candidate) (reason "legacy digest export with no tracked Scheme caller")) - (export (symbol "jerboa_mlockall") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if process-control wrapper lands")) - (export (symbol "jerboa_prctl_set_name") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if process-control wrapper lands")) - (export (symbol "jerboa_proc_self_exe") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if process-control wrapper lands")) - (export (symbol "jerboa_regex_compile_ex") (decision removal-candidate) (reason "no tracked Scheme caller; verify extended regex API need before retaining")) - (export (symbol "jerboa_setproctitle") (decision removal-candidate) (reason "no tracked Scheme caller; keep only if FreeBSD process-title wrapper lands")) - (export (symbol "jerboa_sha256_ctx_final") (decision removal-candidate) (reason "streaming SHA-256 context API has no tracked Scheme caller")) - (export (symbol "jerboa_sha256_ctx_free") (decision removal-candidate) (reason "streaming SHA-256 context API has no tracked Scheme caller")) - (export (symbol "jerboa_sha256_ctx_new") (decision removal-candidate) (reason "streaming SHA-256 context API has no tracked Scheme caller")) - (export (symbol "jerboa_sha256_ctx_update") (decision removal-candidate) (reason "streaming SHA-256 context API has no tracked Scheme caller")) - (export (symbol "jerboa_sm_fuel_remaining") (decision removal-candidate) (reason "SpiderMonkey/WASM support export has no tracked Scheme caller")) - (export (symbol "jerboa_sm_memory_read") (decision removal-candidate) (reason "SpiderMonkey/WASM support export has no tracked Scheme caller")) - (export (symbol "jerboa_sm_memory_size") (decision removal-candidate) (reason "SpiderMonkey/WASM support export has no tracked Scheme caller")) - (export (symbol "jerboa_sm_memory_write") (decision removal-candidate) (reason "SpiderMonkey/WASM support export has no tracked Scheme caller")) - (export (symbol "jerboa_socks5_server_port") (decision removal-candidate) (reason "SOCKS5 proxy export has no tracked Scheme caller")) - (export (symbol "jerboa_socks5_server_start") (decision removal-candidate) (reason "SOCKS5 proxy export has no tracked Scheme caller")) - (export (symbol "jerboa_socks5_server_stats") (decision removal-candidate) (reason "SOCKS5 proxy export has no tracked Scheme caller")) - (export (symbol "jerboa_socks5_server_stop") (decision removal-candidate) (reason "SOCKS5 proxy export has no tracked Scheme caller")) - (export (symbol "jerboa_tls_connect_mtls_mem") (decision removal-candidate) (reason "mTLS memory-buffer variant has no tracked Scheme caller")) - (export (symbol "jerboa_tls_connect_mtls_pem_ca") (decision removal-candidate) (reason "mTLS PEM-CA variant has no tracked Scheme caller")) - (export (symbol "jerboa_tls_server_new_mtls_pem") (decision removal-candidate) (reason "TLS server mTLS constructor has no tracked Scheme caller")) - (export (symbol "jerboa_tls_server_new_pem") (decision removal-candidate) (reason "TLS server PEM constructor has no tracked Scheme caller")) - (export (symbol "jerboa_wasm_allow_cdb_dir") (decision removal-candidate) (reason "WASM host permission export has no tracked Scheme caller")) - (export (symbol "jerboa_wasm_set_socket") (decision removal-candidate) (reason "WASM socket injection export has no tracked Scheme caller")) - (export (symbol "jerboa_x25519_diffie_hellman") (decision removal-candidate) (reason "X25519 export has no tracked Scheme caller")) - (export (symbol "jerboa_x25519_generate_keypair") (decision removal-candidate) (reason "X25519 export has no tracked Scheme caller")) - (export (symbol "jerboa_x25519_public_from_private") (decision removal-candidate) (reason "X25519 export has no tracked Scheme caller")) - (export (symbol "jerboa_x509_generate_self_signed_mem") (decision removal-candidate) (reason "memory-buffer X.509 variant has no tracked Scheme caller")) - (export (symbol "jerboa_x509_generate_signed_by_ca_mem") (decision removal-candidate) (reason "memory-buffer X.509 CA-signing variant has no tracked Scheme caller")))) + (export (symbol "embed_read_passphrase") (decision retain-standalone-c-abi) (reason "binary embedding and encrypted-boot support API, intentionally consumed outside Scheme source")))) --- a/docs/reviews/2026-07-27-native-export-review.md +++ b/docs/reviews/2026-07-27-native-export-review.md @@ -11,11 +11,15 @@ fails review instead of becoming stale prose. Current summary: -- Actual Rust C ABI exports: 225 +- Actual Rust C ABI exports: 190 - Exports referenced by tracked Scheme source: 183 -- Exports with no tracked Scheme reference: 42 +- Exports with no tracked Scheme reference: 7 - Zero-caller exports explicitly retained for standalone C/binary tooling: 7 -- Zero-caller exports marked as removal candidates: 35 +- Zero-caller exports marked as removal candidates: 0 + +This pass removed the C ABI export marker from the 35 prior removal +candidates. They remain ordinary Rust functions where still useful internally, +but no longer enlarge the native symbol surface. The broader FFI audit still reports raw `no_mangle` marker sites separately; this review counts only actual exported Rust functions. --- a/docs/reviews/2026-07-27-native-export-review.sexp +++ b/docs/reviews/2026-07-27-native-export-review.sexp @@ -2,7 +2,7 @@ (schema "jerboa.native-export-review/1") (generated-by "support/check-native-export-review.sh") (policy scheme-callers-or-documented) - (summary (exports 225) (scheme-referenced 183) (no-scheme-reference 42)) + (summary (exports 190) (scheme-referenced 183) (no-scheme-reference 7)) (exports (export (symbol "ed25519_derive_pubkey_standalone") (file "jerboa-native-rs/src/ed25519.rs") (line 44) (scheme-callers 0 (none))) (export (symbol "ed25519_sign_standalone") (file "jerboa-native-rs/src/ed25519.rs") (line 9) (scheme-callers 0 (none))) @@ -11,25 +11,23 @@ (export (symbol "embed_pbkdf2_sha256") (file "jerboa-native-rs/src/embed_crypto.rs") (line 19) (scheme-callers 0 (none))) (export (symbol "embed_random_bytes") (file "jerboa-native-rs/src/embed_crypto.rs") (line 157) (scheme-callers 0 (none))) (export (symbol "embed_read_passphrase") (file "jerboa-native-rs/src/embed_crypto.rs") (line 180) (scheme-callers 0 (none))) - (export (symbol "jerboa_aead_open") (file "jerboa-native-rs/src/crypto.rs") (line 388) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 161)))) - (export (symbol "jerboa_aead_seal") (file "jerboa-native-rs/src/crypto.rs") (line 318) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 140)))) + (export (symbol "jerboa_aead_open") (file "jerboa-native-rs/src/crypto.rs") (line 383) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 161)))) + (export (symbol "jerboa_aead_seal") (file "jerboa-native-rs/src/crypto.rs") (line 313) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 140)))) (export (symbol "jerboa_antidebug_check_all") (file "jerboa-native-rs/src/antidebug.rs") (line 147) (scheme-callers 1 (caller (file "lib/std/os/antidebug.ss") (line 46)))) (export (symbol "jerboa_antidebug_check_breakpoint") (file "jerboa-native-rs/src/antidebug.rs") (line 98) (scheme-callers 1 (caller (file "lib/std/os/antidebug.ss") (line 42)))) (export (symbol "jerboa_antidebug_check_ld_preload") (file "jerboa-native-rs/src/antidebug.rs") (line 60) (scheme-callers 1 (caller (file "lib/std/os/antidebug.ss") (line 40)))) (export (symbol "jerboa_antidebug_check_tracer") (file "jerboa-native-rs/src/antidebug.rs") (line 30) (scheme-callers 1 (caller (file "lib/std/os/antidebug.ss") (line 38)))) (export (symbol "jerboa_antidebug_ptrace") (file "jerboa-native-rs/src/antidebug.rs") (line 8) (scheme-callers 1 (caller (file "lib/std/os/antidebug.ss") (line 36)))) (export (symbol "jerboa_antidebug_timing_check") (file "jerboa-native-rs/src/antidebug.rs") (line 119) (scheme-callers 1 (caller (file "lib/std/os/antidebug.ss") (line 44)))) - (export (symbol "jerboa_aproc_close") (file "jerboa-native-rs/src/aproc.rs") (line 581) (scheme-callers 0 (none))) - (export (symbol "jerboa_aproc_dup") (file "jerboa-native-rs/src/aproc.rs") (line 565) (scheme-callers 0 (none))) - (export (symbol "jerboa_aproc_killpg") (file "jerboa-native-rs/src/aproc.rs") (line 616) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 154)))) - (export (symbol "jerboa_aproc_set_nonblock") (file "jerboa-native-rs/src/aproc.rs") (line 588) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 150)))) + (export (symbol "jerboa_aproc_killpg") (file "jerboa-native-rs/src/aproc.rs") (line 614) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 154)))) + (export (symbol "jerboa_aproc_set_nonblock") (file "jerboa-native-rs/src/aproc.rs") (line 586) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 150)))) (export (symbol "jerboa_aproc_spawn") (file "jerboa-native-rs/src/aproc.rs") (line 132) (scheme-callers 2 (caller (file "lib/std/os/aproc.ss") (line 126)) (caller (file "lib/std/os/aproc.ss") (line 141)))) (export (symbol "jerboa_aproc_spawn_pty") (file "jerboa-native-rs/src/aproc.rs") (line 340) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 141)))) - (export (symbol "jerboa_aproc_wait4") (file "jerboa-native-rs/src/aproc.rs") (line 630) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 158)))) - (export (symbol "jerboa_argon2id_hash") (file "jerboa-native-rs/src/crypto.rs") (line 714) (scheme-callers 2 (caller (file "lib/std/crypto/native-rust.ss") (line 276)) (caller (file "lib/std/crypto/password.ss") (line 35)))) - (export (symbol "jerboa_argon2id_verify") (file "jerboa-native-rs/src/crypto.rs") (line 763) (scheme-callers 2 (caller (file "lib/std/crypto/native-rust.ss") (line 296)) (caller (file "lib/std/crypto/password.ss") (line 42)))) - (export (symbol "jerboa_chacha20_open") (file "jerboa-native-rs/src/crypto.rs") (line 531) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 204)))) - (export (symbol "jerboa_chacha20_seal") (file "jerboa-native-rs/src/crypto.rs") (line 462) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 182)))) + (export (symbol "jerboa_aproc_wait4") (file "jerboa-native-rs/src/aproc.rs") (line 628) (scheme-callers 1 (caller (file "lib/std/os/aproc.ss") (line 158)))) + (export (symbol "jerboa_argon2id_hash") (file "jerboa-native-rs/src/crypto.rs") (line 709) (scheme-callers 2 (caller (file "lib/std/crypto/native-rust.ss") (line 276)) (caller (file "lib/std/crypto/password.ss") (line 35)))) + (export (symbol "jerboa_argon2id_verify") (file "jerboa-native-rs/src/crypto.rs") (line 758) (scheme-callers 2 (caller (file "lib/std/crypto/native-rust.ss") (line 296)) (caller (file "lib/std/crypto/password.ss") (line 42)))) + (export (symbol "jerboa_chacha20_open") (file "jerboa-native-rs/src/crypto.rs") (line 526) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 204)))) + (export (symbol "jerboa_chacha20_seal") (file "jerboa-native-rs/src/crypto.rs") (line 457) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 182)))) (export (symbol "jerboa_deflate") (file "jerboa-native-rs/src/compress.rs") (line 9) (scheme-callers 1 (caller (file "lib/std/compress/native-rust.ss") (line 30)))) (export (symbol "jerboa_duckdb_bind_blob") (file "jerboa-native-rs/src/duckdb_native.rs") (line 334) (scheme-callers 1 (caller (file "lib/std/db/duckdb-native.ss") (line 62)))) (export (symbol "jerboa_duckdb_bind_bool") (file "jerboa-native-rs/src/duckdb_native.rs") (line 386) (scheme-callers 1 (caller (file "lib/std/db/duckdb-native.ss") (line 66)))) @@ -63,13 +61,10 @@ (export (symbol "jerboa_eventfd_create") (file "jerboa-native-rs/src/epoll.rs") (line 94) (scheme-callers 1 (caller (file "lib/std/os/epoll-native.ss") (line 293)))) (export (symbol "jerboa_eventfd_drain") (file "jerboa-native-rs/src/epoll.rs") (line 120) (scheme-callers 1 (caller (file "lib/std/os/epoll-native.ss") (line 299)))) (export (symbol "jerboa_eventfd_signal") (file "jerboa-native-rs/src/epoll.rs") (line 106) (scheme-callers 1 (caller (file "lib/std/os/epoll-native.ss") (line 296)))) - (export (symbol "jerboa_freebsd_is_traced") (file "jerboa-native-rs/src/process_ctl.rs") (line 98) (scheme-callers 0 (none))) - (export (symbol "jerboa_freebsd_process_count") (file "jerboa-native-rs/src/process_ctl.rs") (line 139) (scheme-callers 0 (none))) (export (symbol "jerboa_gunzip") (file "jerboa-native-rs/src/compress.rs") (line 137) (scheme-callers 1 (caller (file "lib/std/compress/native-rust.ss") (line 39)))) (export (symbol "jerboa_gzip") (file "jerboa-native-rs/src/compress.rs") (line 97) (scheme-callers 1 (caller (file "lib/std/compress/native-rust.ss") (line 36)))) - (export (symbol "jerboa_hkdf_sha256") (file "jerboa-native-rs/src/x25519.rs") (line 101) (scheme-callers 0 (none))) - (export (symbol "jerboa_hmac_sha256") (file "jerboa-native-rs/src/crypto.rs") (line 201) (scheme-callers 2 (caller (file "lib/std/crypto/native-rust.ss") (line 109)) (caller (file "lib/std/crypto/native-rust.ss") (line 120)))) - (export (symbol "jerboa_hmac_sha256_verify") (file "jerboa-native-rs/src/crypto.rs") (line 232) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 120)))) + (export (symbol "jerboa_hmac_sha256") (file "jerboa-native-rs/src/crypto.rs") (line 196) (scheme-callers 2 (caller (file "lib/std/crypto/native-rust.ss") (line 109)) (caller (file "lib/std/crypto/native-rust.ss") (line 120)))) + (export (symbol "jerboa_hmac_sha256_verify") (file "jerboa-native-rs/src/crypto.rs") (line 227) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 120)))) (export (symbol "jerboa_http_parse") (file "jerboa-native-rs/src/http_parse.rs") (line 25) (scheme-callers 4 (caller (file "lib/std/net/fiber-httpd.ss") (line 78)) (caller (file "lib/std/net/fiber-httpd.ss") (line 81)) (caller (file "lib/std/net/httpsd.ss") (line 28)) (caller (file "lib/std/net/httpsd.ss") (line 71)))) (export (symbol "jerboa_inflate") (file "jerboa-native-rs/src/compress.rs") (line 49) (scheme-callers 1 (caller (file "lib/std/compress/native-rust.ss") (line 33)))) (export (symbol "jerboa_inotify_add_watch") (file "jerboa-native-rs/src/inotify_native.rs") (line 22) (scheme-callers 1 (caller (file "lib/std/os/inotify-native.ss") (line 65)))) @@ -82,17 +77,14 @@ (export (symbol "jerboa_integrity_hash_self") (file "jerboa-native-rs/src/integrity.rs") (line 65) (scheme-callers 1 (caller (file "lib/std/os/integrity.ss") (line 53)))) (export (symbol "jerboa_integrity_sign_verify") (file "jerboa-native-rs/src/integrity.rs") (line 134) (scheme-callers 1 (caller (file "lib/std/os/integrity.ss") (line 57)))) (export (symbol "jerboa_integrity_verify_hash") (file "jerboa-native-rs/src/integrity.rs") (line 96) (scheme-callers 1 (caller (file "lib/std/os/integrity.ss") (line 55)))) - (export (symbol "jerboa_kill_probe") (file "jerboa-native-rs/src/process_ctl.rs") (line 59) (scheme-callers 0 (none))) (export (symbol "jerboa_landlock_abi_version") (file "jerboa-native-rs/src/landlock.rs") (line 65) (scheme-callers 6 (caller (file "lib/std/os/landlock-native.ss") (line 78)) (caller (file "lib/std/os/landlock.ss") (line 12)) (caller (file "lib/std/os/landlock.ss") (line 56)) (caller (file "lib/std/os/landlock.ss") (line 57)) (caller (file "lib/std/os/limits/sandbox.ss") (line 455)) (caller (file "lib/std/os/sandbox.ss") (line 75)))) (export (symbol "jerboa_landlock_add_net_rule") (file "jerboa-native-rs/src/landlock.rs") (line 201) (scheme-callers 1 (caller (file "lib/std/os/landlock-native.ss") (line 86)))) (export (symbol "jerboa_landlock_add_path_rule") (file "jerboa-native-rs/src/landlock.rs") (line 120) (scheme-callers 1 (caller (file "lib/std/os/landlock-native.ss") (line 83)))) (export (symbol "jerboa_landlock_create_ruleset") (file "jerboa-native-rs/src/landlock.rs") (line 91) (scheme-callers 1 (caller (file "lib/std/os/landlock-native.ss") (line 80)))) (export (symbol "jerboa_landlock_enforce") (file "jerboa-native-rs/src/landlock.rs") (line 234) (scheme-callers 1 (caller (file "lib/std/os/landlock-native.ss") (line 89)))) (export (symbol "jerboa_last_error") (file "jerboa-native-rs/src/panic.rs") (line 9) (scheme-callers 11 (caller (file "lib/std/compress/native-rust.ss") (line 42)) (caller (file "lib/std/crypto/native-rust.ss") (line 48)) (caller (file "lib/std/crypto/x509.ss") (line 24)) (caller (file "lib/std/native.ss") (line 56)) (caller (file "lib/std/net/tls-rustls.ss") (line 167)) (caller (file "lib/std/os/aproc.ss") (line 163)) (caller (file "lib/std/os/integrity.ss") (line 42)) (caller (file "lib/std/os/secure-output.ss") (line 47)) (caller (file "lib/std/pcap.ss") (line 66)) (caller (file "lib/std/regex-native.ss") (line 51)) (caller (file "lib/std/wasm/sandbox.ss") (line 196)))) - (export (symbol "jerboa_md5") (file "jerboa-native-rs/src/crypto.rs") (line 53) (scheme-callers 0 (none))) - (export (symbol "jerboa_mlockall") (file "jerboa-native-rs/src/process_ctl.rs") (line 37) (scheme-callers 0 (none))) - (export (symbol "jerboa_pbkdf2_derive") (file "jerboa-native-rs/src/crypto.rs") (line 647) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 246)))) - (export (symbol "jerboa_pbkdf2_verify") (file "jerboa-native-rs/src/crypto.rs") (line 676) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 261)))) + (export (symbol "jerboa_pbkdf2_derive") (file "jerboa-native-rs/src/crypto.rs") (line 642) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 246)))) + (export (symbol "jerboa_pbkdf2_verify") (file "jerboa-native-rs/src/crypto.rs") (line 671) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 261)))) (export (symbol "jerboa_pcap_close") (file "jerboa-native-rs/src/pcap_capture.rs") (line 324) (scheme-callers 1 (caller (file "lib/std/pcap.ss") (line 58)))) (export (symbol "jerboa_pcap_list_interfaces") (file "jerboa-native-rs/src/pcap_capture.rs") (line 350) (scheme-callers 1 (caller (file "lib/std/pcap.ss") (line 62)))) (export (symbol "jerboa_pcap_next") (file "jerboa-native-rs/src/pcap_capture.rs") (line 260) (scheme-callers 1 (caller (file "lib/std/pcap.ss") (line 53)))) @@ -107,19 +99,16 @@ (export (symbol "jerboa_pg_ncols") (file "jerboa-native-rs/src/postgres_native.rs") (line 223) (scheme-callers 1 (caller (file "lib/std/db/postgresql-native.ss") (line 34)))) (export (symbol "jerboa_pg_nrows") (file "jerboa-native-rs/src/postgres_native.rs") (line 215) (scheme-callers 1 (caller (file "lib/std/db/postgresql-native.ss") (line 32)))) (export (symbol "jerboa_pg_query") (file "jerboa-native-rs/src/postgres_native.rs") (line 172) (scheme-callers 1 (caller (file "lib/std/db/postgresql-native.ss") (line 30)))) - (export (symbol "jerboa_prctl_set_name") (file "jerboa-native-rs/src/process_ctl.rs") (line 6) (scheme-callers 0 (none))) - (export (symbol "jerboa_proc_self_exe") (file "jerboa-native-rs/src/process_ctl.rs") (line 218) (scheme-callers 0 (none))) - (export (symbol "jerboa_random_bytes") (file "jerboa-native-rs/src/crypto.rs") (line 265) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 98)))) - (export (symbol "jerboa_regex_captures") (file "jerboa-native-rs/src/regex_native.rs") (line 275) (scheme-callers 2 (caller (file "lib/std/regex-native.ss") (line 40)) (caller (file "lib/std/regex.ss") (line 106)))) + (export (symbol "jerboa_random_bytes") (file "jerboa-native-rs/src/crypto.rs") (line 260) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 98)))) + (export (symbol "jerboa_regex_captures") (file "jerboa-native-rs/src/regex_native.rs") (line 274) (scheme-callers 2 (caller (file "lib/std/regex-native.ss") (line 40)) (caller (file "lib/std/regex.ss") (line 106)))) (export (symbol "jerboa_regex_compile") (file "jerboa-native-rs/src/regex_native.rs") (line 14) (scheme-callers 3 (caller (file "lib/std/regex-native.ss") (line 27)) (caller (file "lib/std/regex.ss") (line 81)) (caller (file "lib/std/regex.ss") (line 85)))) - (export (symbol "jerboa_regex_compile_ex") (file "jerboa-native-rs/src/regex_native.rs") (line 170) (scheme-callers 0 (none))) (export (symbol "jerboa_regex_find") (file "jerboa-native-rs/src/regex_native.rs") (line 75) (scheme-callers 4 (caller (file "lib/std/regex-native.ss") (line 33)) (caller (file "lib/std/regex.ss") (line 89)) (caller (file "lib/std/regex.ss") (line 97)) (caller (file "lib/std/regex.ss") (line 657)))) - (export (symbol "jerboa_regex_find_at") (file "jerboa-native-rs/src/regex_native.rs") (line 229) (scheme-callers 3 (caller (file "lib/std/regex-native.ss") (line 33)) (caller (file "lib/std/regex.ss") (line 97)) (caller (file "lib/std/regex.ss") (line 657)))) + (export (symbol "jerboa_regex_find_at") (file "jerboa-native-rs/src/regex_native.rs") (line 228) (scheme-callers 3 (caller (file "lib/std/regex-native.ss") (line 33)) (caller (file "lib/std/regex.ss") (line 97)) (caller (file "lib/std/regex.ss") (line 657)))) (export (symbol "jerboa_regex_free") (file "jerboa-native-rs/src/regex_native.rs") (line 157) (scheme-callers 2 (caller (file "lib/std/regex-native.ss") (line 48)) (caller (file "lib/std/regex.ss") (line 93)))) - (export (symbol "jerboa_regex_group_count") (file "jerboa-native-rs/src/regex_native.rs") (line 328) (scheme-callers 2 (caller (file "lib/std/regex-native.ss") (line 37)) (caller (file "lib/std/regex.ss") (line 102)))) + (export (symbol "jerboa_regex_group_count") (file "jerboa-native-rs/src/regex_native.rs") (line 327) (scheme-callers 2 (caller (file "lib/std/regex-native.ss") (line 37)) (caller (file "lib/std/regex.ss") (line 102)))) (export (symbol "jerboa_regex_is_match") (file "jerboa-native-rs/src/regex_native.rs") (line 49) (scheme-callers 1 (caller (file "lib/std/regex-native.ss") (line 30)))) (export (symbol "jerboa_regex_replace_all") (file "jerboa-native-rs/src/regex_native.rs") (line 112) (scheme-callers 1 (caller (file "lib/std/regex-native.ss") (line 44)))) - (export (symbol "jerboa_scrypt") (file "jerboa-native-rs/src/crypto.rs") (line 605) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 226)))) + (export (symbol "jerboa_scrypt") (file "jerboa-native-rs/src/crypto.rs") (line 600) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 226)))) (export (symbol "jerboa_seccomp_available") (file "jerboa-native-rs/src/seccomp.rs") (line 283) (scheme-callers 1 (caller (file "lib/std/os/seccomp.ss") (line 32)))) (export (symbol "jerboa_seccomp_lock") (file "jerboa-native-rs/src/seccomp.rs") (line 125) (scheme-callers 2 (caller (file "lib/std/os/seccomp.ss") (line 34)) (caller (file "lib/std/os/seccomp.ss") (line 36)))) (export (symbol "jerboa_seccomp_lock_strict") (file "jerboa-native-rs/src/seccomp.rs") (line 197) (scheme-callers 1 (caller (file "lib/std/os/seccomp.ss") (line 36)))) @@ -139,31 +128,18 @@ (export (symbol "jerboa_secure_random_fill") (file "jerboa-native-rs/src/secure_mem.rs") (line 169) (scheme-callers 1 (caller (file "lib/std/crypto/secure-mem.ss") (line 44)))) (export (symbol "jerboa_secure_read_file") (file "jerboa-native-rs/src/secure_fs.rs") (line 673) (scheme-callers 1 (caller (file "lib/std/os/secure-output.ss") (line 65)))) (export (symbol "jerboa_secure_wipe") (file "jerboa-native-rs/src/secure_mem.rs") (line 156) (scheme-callers 1 (caller (file "lib/std/crypto/secure-mem.ss") (line 41)))) - (export (symbol "jerboa_setproctitle") (file "jerboa-native-rs/src/process_ctl.rs") (line 179) (scheme-callers 0 (none))) - (export (symbol "jerboa_sha1") (file "jerboa-native-rs/src/crypto.rs") (line 66) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 60)))) - (export (symbol "jerboa_sha256") (file "jerboa-native-rs/src/crypto.rs") (line 82) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 69)))) - (export (symbol "jerboa_sha256_ctx_final") (file "jerboa-native-rs/src/crypto.rs") (line 151) (scheme-callers 0 (none))) - (export (symbol "jerboa_sha256_ctx_free") (file "jerboa-native-rs/src/crypto.rs") (line 174) (scheme-callers 0 (none))) - (export (symbol "jerboa_sha256_ctx_new") (file "jerboa-native-rs/src/crypto.rs") (line 112) (scheme-callers 0 (none))) - (export (symbol "jerboa_sha256_ctx_update") (file "jerboa-native-rs/src/crypto.rs") (line 128) (scheme-callers 0 (none))) - (export (symbol "jerboa_sha384") (file "jerboa-native-rs/src/crypto.rs") (line 179) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 78)))) - (export (symbol "jerboa_sha512") (file "jerboa-native-rs/src/crypto.rs") (line 189) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 87)))) - (export (symbol "jerboa_sm_add_fuel") (file "jerboa-native-rs/src/wasm_sm.rs") (line 967) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 186)))) + (export (symbol "jerboa_sha1") (file "jerboa-native-rs/src/crypto.rs") (line 65) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 60)))) + (export (symbol "jerboa_sha256") (file "jerboa-native-rs/src/crypto.rs") (line 81) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 69)))) + (export (symbol "jerboa_sha384") (file "jerboa-native-rs/src/crypto.rs") (line 174) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 78)))) + (export (symbol "jerboa_sha512") (file "jerboa-native-rs/src/crypto.rs") (line 184) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 87)))) + (export (symbol "jerboa_sm_add_fuel") (file "jerboa-native-rs/src/wasm_sm.rs") (line 964) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 186)))) (export (symbol "jerboa_sm_call") (file "jerboa-native-rs/src/wasm_sm.rs") (line 837) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 168)))) - (export (symbol "jerboa_sm_fuel_remaining") (file "jerboa-native-rs/src/wasm_sm.rs") (line 972) (scheme-callers 0 (none))) - (export (symbol "jerboa_sm_get_log") (file "jerboa-native-rs/src/wasm_sm.rs") (line 981) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 180)))) + (export (symbol "jerboa_sm_get_log") (file "jerboa-native-rs/src/wasm_sm.rs") (line 977) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 180)))) (export (symbol "jerboa_sm_instance_free") (file "jerboa-native-rs/src/wasm_sm.rs") (line 828) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 162)))) (export (symbol "jerboa_sm_instance_new") (file "jerboa-native-rs/src/wasm_sm.rs") (line 818) (scheme-callers 2 (caller (file "lib/std/wasm/sandbox.ss") (line 156)) (caller (file "lib/std/wasm/sandbox.ss") (line 174)))) (export (symbol "jerboa_sm_instance_new_hosted") (file "jerboa-native-rs/src/wasm_sm.rs") (line 823) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 174)))) - (export (symbol "jerboa_sm_memory_read") (file "jerboa-native-rs/src/wasm_sm.rs") (line 938) (scheme-callers 0 (none))) - (export (symbol "jerboa_sm_memory_size") (file "jerboa-native-rs/src/wasm_sm.rs") (line 958) (scheme-callers 0 (none))) - (export (symbol "jerboa_sm_memory_write") (file "jerboa-native-rs/src/wasm_sm.rs") (line 948) (scheme-callers 0 (none))) (export (symbol "jerboa_sm_module_free") (file "jerboa-native-rs/src/wasm_sm.rs") (line 777) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 150)))) (export (symbol "jerboa_sm_module_new") (file "jerboa-native-rs/src/wasm_sm.rs") (line 697) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 144)))) - (export (symbol "jerboa_socks5_server_port") (file "jerboa-native-rs/src/socks5_server.rs") (line 250) (scheme-callers 0 (none))) - (export (symbol "jerboa_socks5_server_start") (file "jerboa-native-rs/src/socks5_server.rs") (line 111) (scheme-callers 0 (none))) - (export (symbol "jerboa_socks5_server_stats") (file "jerboa-native-rs/src/socks5_server.rs") (line 270) (scheme-callers 0 (none))) - (export (symbol "jerboa_socks5_server_stop") (file "jerboa-native-rs/src/socks5_server.rs") (line 223) (scheme-callers 0 (none))) (export (symbol "jerboa_sqlite_bind_blob") (file "jerboa-native-rs/src/sqlite.rs") (line 318) (scheme-callers 1 (caller (file "lib/std/db/sqlite-native.ss") (line 63)))) (export (symbol "jerboa_sqlite_bind_double") (file "jerboa-native-rs/src/sqlite.rs") (line 247) (scheme-callers 1 (caller (file "lib/std/db/sqlite-native.ss") (line 59)))) (export (symbol "jerboa_sqlite_bind_int") (file "jerboa-native-rs/src/sqlite.rs") (line 227) (scheme-callers 1 (caller (file "lib/std/db/sqlite-native.ss") (line 57)))) @@ -186,48 +162,37 @@ (export (symbol "jerboa_sqlite_prepare") (file "jerboa-native-rs/src/sqlite.rs") (line 152) (scheme-callers 1 (caller (file "lib/std/db/sqlite-native.ss") (line 50)))) (export (symbol "jerboa_sqlite_reset") (file "jerboa-native-rs/src/sqlite.rs") (line 564) (scheme-callers 1 (caller (file "lib/std/db/sqlite-native.ss") (line 54)))) (export (symbol "jerboa_sqlite_step") (file "jerboa-native-rs/src/sqlite.rs") (line 385) (scheme-callers 1 (caller (file "lib/std/db/sqlite-native.ss") (line 68)))) - (export (symbol "jerboa_timing_safe_equal") (file "jerboa-native-rs/src/crypto.rs") (line 288) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 131)))) - (export (symbol "jerboa_tls_accept") (file "jerboa-native-rs/src/tls.rs") (line 808) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 86)))) - (export (symbol "jerboa_tls_close") (file "jerboa-native-rs/src/tls.rs") (line 1679) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 144)))) + (export (symbol "jerboa_timing_safe_equal") (file "jerboa-native-rs/src/crypto.rs") (line 283) (scheme-callers 1 (caller (file "lib/std/crypto/native-rust.ss") (line 131)))) + (export (symbol "jerboa_tls_accept") (file "jerboa-native-rs/src/tls.rs") (line 807) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 86)))) + (export (symbol "jerboa_tls_close") (file "jerboa-native-rs/src/tls.rs") (line 1675) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 144)))) (export (symbol "jerboa_tls_connect") (file "jerboa-native-rs/src/tls.rs") (line 154) (scheme-callers 5 (caller (file "lib/std/net/tls-rustls.ss") (line 92)) (caller (file "lib/std/net/tls-rustls.ss") (line 98)) (caller (file "lib/std/net/tls-rustls.ss") (line 107)) (caller (file "lib/std/net/tls-rustls.ss") (line 114)) (caller (file "lib/std/net/tls-rustls.ss") (line 121)))) (export (symbol "jerboa_tls_connect_addr_timeout") (file "jerboa-native-rs/src/tls.rs") (line 293) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 107)))) - (export (symbol "jerboa_tls_connect_mtls") (file "jerboa-native-rs/src/tls.rs") (line 1137) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 121)))) - (export (symbol "jerboa_tls_connect_mtls_mem") (file "jerboa-native-rs/src/tls.rs") (line 1452) (scheme-callers 0 (none))) - (export (symbol "jerboa_tls_connect_mtls_pem_ca") (file "jerboa-native-rs/src/tls.rs") (line 1319) (scheme-callers 0 (none))) + (export (symbol "jerboa_tls_connect_mtls") (file "jerboa-native-rs/src/tls.rs") (line 1135) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 121)))) (export (symbol "jerboa_tls_connect_pinned") (file "jerboa-native-rs/src/tls.rs") (line 407) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 114)))) (export (symbol "jerboa_tls_connect_timeout") (file "jerboa-native-rs/src/tls.rs") (line 161) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 98)))) - (export (symbol "jerboa_tls_flush") (file "jerboa-native-rs/src/tls.rs") (line 1644) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 139)))) - (export (symbol "jerboa_tls_get_fd") (file "jerboa-native-rs/src/tls.rs") (line 1772) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 161)))) - (export (symbol "jerboa_tls_read") (file "jerboa-native-rs/src/tls.rs") (line 1580) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 129)))) - (export (symbol "jerboa_tls_server_free") (file "jerboa-native-rs/src/tls.rs") (line 1696) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 80)))) + (export (symbol "jerboa_tls_flush") (file "jerboa-native-rs/src/tls.rs") (line 1640) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 139)))) + (export (symbol "jerboa_tls_get_fd") (file "jerboa-native-rs/src/tls.rs") (line 1768) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 161)))) + (export (symbol "jerboa_tls_read") (file "jerboa-native-rs/src/tls.rs") (line 1576) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 129)))) + (export (symbol "jerboa_tls_server_free") (file "jerboa-native-rs/src/tls.rs") (line 1692) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 80)))) (export (symbol "jerboa_tls_server_new") (file "jerboa-native-rs/src/tls.rs") (line 635) (scheme-callers 2 (caller (file "lib/std/net/tls-rustls.ss") (line 67)) (caller (file "lib/std/net/tls-rustls.ss") (line 74)))) - (export (symbol "jerboa_tls_server_new_mtls") (file "jerboa-native-rs/src/tls.rs") (line 977) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 74)))) - (export (symbol "jerboa_tls_server_new_mtls_pem") (file "jerboa-native-rs/src/tls.rs") (line 863) (scheme-callers 0 (none))) - (export (symbol "jerboa_tls_server_new_pem") (file "jerboa-native-rs/src/tls.rs") (line 737) (scheme-callers 0 (none))) - (export (symbol "jerboa_tls_set_nonblock") (file "jerboa-native-rs/src/tls.rs") (line 1703) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 150)))) - (export (symbol "jerboa_tls_set_timeout") (file "jerboa-native-rs/src/tls.rs") (line 1728) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 155)))) - (export (symbol "jerboa_tls_write") (file "jerboa-native-rs/src/tls.rs") (line 1613) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 134)))) - (export (symbol "jerboa_wasm_add_fuel") (file "jerboa-native-rs/src/wasm.rs") (line 295) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 118)))) - (export (symbol "jerboa_wasm_allow_cdb_dir") (file "jerboa-native-rs/src/wasm.rs") (line 253) (scheme-callers 0 (none))) - (export (symbol "jerboa_wasm_call") (file "jerboa-native-rs/src/wasm.rs") (line 343) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 94)))) - (export (symbol "jerboa_wasm_fuel_remaining") (file "jerboa-native-rs/src/wasm.rs") (line 318) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 124)))) - (export (symbol "jerboa_wasm_get_log") (file "jerboa-native-rs/src/wasm.rs") (line 585) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 136)))) + (export (symbol "jerboa_tls_server_new_mtls") (file "jerboa-native-rs/src/tls.rs") (line 975) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 74)))) + (export (symbol "jerboa_tls_set_nonblock") (file "jerboa-native-rs/src/tls.rs") (line 1699) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 150)))) + (export (symbol "jerboa_tls_set_timeout") (file "jerboa-native-rs/src/tls.rs") (line 1724) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 155)))) + (export (symbol "jerboa_tls_write") (file "jerboa-native-rs/src/tls.rs") (line 1609) (scheme-callers 1 (caller (file "lib/std/net/tls-rustls.ss") (line 134)))) + (export (symbol "jerboa_wasm_add_fuel") (file "jerboa-native-rs/src/wasm.rs") (line 293) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 118)))) + (export (symbol "jerboa_wasm_call") (file "jerboa-native-rs/src/wasm.rs") (line 341) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 94)))) + (export (symbol "jerboa_wasm_fuel_remaining") (file "jerboa-native-rs/src/wasm.rs") (line 316) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 124)))) + (export (symbol "jerboa_wasm_get_log") (file "jerboa-native-rs/src/wasm.rs") (line 583) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 136)))) (export (symbol "jerboa_wasm_instance_free") (file "jerboa-native-rs/src/wasm.rs") (line 208) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 88)))) (export (symbol "jerboa_wasm_instance_new") (file "jerboa-native-rs/src/wasm.rs") (line 154) (scheme-callers 3 (caller (file "lib/std/wasm/sandbox.ss") (line 82)) (caller (file "lib/std/wasm/sandbox.ss") (line 130)) (caller (file "tests/test-wasm-sandbox.ss") (line 500)))) - (export (symbol "jerboa_wasm_instance_new_hosted") (file "jerboa-native-rs/src/wasm.rs") (line 1124) (scheme-callers 2 (caller (file "lib/std/wasm/sandbox.ss") (line 130)) (caller (file "tests/test-wasm-sandbox.ss") (line 500)))) - (export (symbol "jerboa_wasm_memory_read") (file "jerboa-native-rs/src/wasm.rs") (line 468) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 100)))) - (export (symbol "jerboa_wasm_memory_size") (file "jerboa-native-rs/src/wasm.rs") (line 563) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 112)))) - (export (symbol "jerboa_wasm_memory_write") (file "jerboa-native-rs/src/wasm.rs") (line 513) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 106)))) + (export (symbol "jerboa_wasm_instance_new_hosted") (file "jerboa-native-rs/src/wasm.rs") (line 1122) (scheme-callers 2 (caller (file "lib/std/wasm/sandbox.ss") (line 130)) (caller (file "tests/test-wasm-sandbox.ss") (line 500)))) + (export (symbol "jerboa_wasm_memory_read") (file "jerboa-native-rs/src/wasm.rs") (line 466) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 100)))) + (export (symbol "jerboa_wasm_memory_size") (file "jerboa-native-rs/src/wasm.rs") (line 561) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 112)))) + (export (symbol "jerboa_wasm_memory_write") (file "jerboa-native-rs/src/wasm.rs") (line 511) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 106)))) (export (symbol "jerboa_wasm_module_free") (file "jerboa-native-rs/src/wasm.rs") (line 142) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 76)))) (export (symbol "jerboa_wasm_module_new") (file "jerboa-native-rs/src/wasm.rs") (line 104) (scheme-callers 1 (caller (file "lib/std/wasm/sandbox.ss") (line 70)))) - (export (symbol "jerboa_wasm_set_socket") (file "jerboa-native-rs/src/wasm.rs") (line 220) (scheme-callers 0 (none))) (export (symbol "jerboa_writev2") (file "jerboa-native-rs/src/http_parse.rs") (line 99) (scheme-callers 1 (caller (file "lib/std/net/io.ss") (line 81)))) - (export (symbol "jerboa_x25519_diffie_hellman") (file "jerboa-native-rs/src/x25519.rs") (line 62) (scheme-callers 0 (none))) - (export (symbol "jerboa_x25519_generate_keypair") (file "jerboa-native-rs/src/x25519.rs") (line 10) (scheme-callers 0 (none))) - (export (symbol "jerboa_x25519_public_from_private") (file "jerboa-native-rs/src/x25519.rs") (line 36) (scheme-callers 0 (none))) - (export (symbol "jerboa_x509_cert_fingerprint") (file "jerboa-native-rs/src/x509.rs") (line 564) (scheme-callers 1 (caller (file "lib/std/crypto/x509.ss") (line 31)))) + (export (symbol "jerboa_x509_cert_fingerprint") (file "jerboa-native-rs/src/x509.rs") (line 562) (scheme-callers 1 (caller (file "lib/std/crypto/x509.ss") (line 31)))) (export (symbol "jerboa_x509_generate_self_signed") (file "jerboa-native-rs/src/x509.rs") (line 124) (scheme-callers 1 (caller (file "lib/std/crypto/x509.ss") (line 27)))) - (export (symbol "jerboa_x509_generate_self_signed_mem") (file "jerboa-native-rs/src/x509.rs") (line 263) (scheme-callers 0 (none))) - (export (symbol "jerboa_x509_generate_signed_by_ca_mem") (file "jerboa-native-rs/src/x509.rs") (line 388) (scheme-callers 0 (none))) ) ) --- a/jerboa-native-rs/src/aproc.rs +++ b/jerboa-native-rs/src/aproc.rs @@ -561,7 +561,6 @@ pub extern "C" fn jerboa_aproc_spawn_pty( } /// dup(2) — returns the new fd, or -1 on error. -#[no_mangle] pub extern "C" fn jerboa_aproc_dup(fd: i32) -> i32 { ffi_wrap(|| { let r = unsafe { libc::dup(fd) }; @@ -577,7 +576,6 @@ pub extern "C" fn jerboa_aproc_dup(fd: i32) -> i32 { } /// close(2) — returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_aproc_close(fd: i32) -> i32 { let r = unsafe { libc::close(fd) }; r --- a/jerboa-native-rs/src/crypto.rs +++ b/jerboa-native-rs/src/crypto.rs @@ -49,7 +49,6 @@ fn digest_impl( }) } -#[no_mangle] pub extern "C" fn jerboa_md5( _input: *const u8, _input_len: usize, @@ -108,7 +107,6 @@ fn next_sha256_context() -> u64 { } /// Allocate an opaque incremental SHA-256 context handle. -#[no_mangle] pub extern "C" fn jerboa_sha256_ctx_new() -> u64 { match std::panic::catch_unwind(|| { let handle = next_sha256_context(); @@ -124,7 +122,6 @@ pub extern "C" fn jerboa_sha256_ctx_new() -> u64 { } /// Add one chunk to an incremental SHA-256 context. -#[no_mangle] pub extern "C" fn jerboa_sha256_ctx_update(handle: u64, input: *const u8, input_len: usize) -> i32 { ffi_wrap(|| { if input.is_null() && input_len > 0 { @@ -147,7 +144,6 @@ pub extern "C" fn jerboa_sha256_ctx_update(handle: u64, input: *const u8, input_ } /// Finalize and consume an incremental SHA-256 context. -#[no_mangle] pub extern "C" fn jerboa_sha256_ctx_final(handle: u64, output: *mut u8, output_len: usize) -> i32 { ffi_wrap(|| { if output.is_null() || output_len < digest::SHA256_OUTPUT_LEN { @@ -170,7 +166,6 @@ pub extern "C" fn jerboa_sha256_ctx_final(handle: u64, output: *mut u8, output_l } /// Drop an unfinished incremental SHA-256 context. Idempotent for cleanup. -#[no_mangle] pub extern "C" fn jerboa_sha256_ctx_free(handle: u64) { let _ = std::panic::catch_unwind(|| lock_sha256_contexts().remove(&handle)); } --- a/jerboa-native-rs/src/process_ctl.rs +++ b/jerboa-native-rs/src/process_ctl.rs @@ -2,7 +2,6 @@ use crate::panic::{ffi_wrap, set_last_error}; /// Set the process name via prctl(PR_SET_NAME) on Linux. /// name: UTF-8 bytes, max 15 bytes (will be truncated). -#[no_mangle] pub extern "C" fn jerboa_prctl_set_name(name: *const u8, name_len: usize) -> i32 { ffi_wrap(|| { if name.is_null() { @@ -33,7 +32,6 @@ pub extern "C" fn jerboa_prctl_set_name(name: *const u8, name_len: usize) -> i32 } /// Lock all current and future memory pages (prevent swapping). -#[no_mangle] pub extern "C" fn jerboa_mlockall() -> i32 { ffi_wrap(|| { #[cfg(any(target_os = "linux", target_os = "freebsd"))] @@ -55,7 +53,6 @@ pub extern "C" fn jerboa_mlockall() -> i32 { /// Probe whether a process exists using kill(pid, 0). /// Returns: 1 = exists, 0 = does not exist, -1 = error. -#[no_mangle] pub extern "C" fn jerboa_kill_probe(pid: u32) -> i32 { ffi_wrap(|| { let rc = unsafe { libc::kill(pid as libc::pid_t, 0) }; @@ -94,7 +91,6 @@ fn errno() -> i32 { /// Check if the current process is being traced (debugged) on FreeBSD. /// Uses sysctl kern.proc.pid to read kinfo_proc and check ki_flag for P_TRACED. /// Returns: 1 = traced, 0 = not traced, -1 = error. -#[no_mangle] pub extern "C" fn jerboa_freebsd_is_traced() -> i32 { ffi_wrap(|| { #[cfg(target_os = "freebsd")] @@ -135,7 +131,6 @@ pub extern "C" fn jerboa_freebsd_is_traced() -> i32 { /// Count total number of processes on FreeBSD via sysctl kern.proc.all. /// Returns the count, or -1 on error. -#[no_mangle] pub extern "C" fn jerboa_freebsd_process_count() -> i32 { ffi_wrap(|| { #[cfg(target_os = "freebsd")] @@ -175,7 +170,6 @@ pub extern "C" fn jerboa_freebsd_process_count() -> i32 { /// Takes a plain string (not a format string) — we call setproctitle("%s", name). /// name: UTF-8 bytes, name_len: length. /// Returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_setproctitle(name: *const u8, name_len: usize) -> i32 { ffi_wrap(|| { if name.is_null() { @@ -214,7 +208,6 @@ pub extern "C" fn jerboa_setproctitle(name: *const u8, name_len: usize) -> i32 { /// Read the path of the current executable. /// On Linux: /proc/self/exe /// On FreeBSD: sysctl KERN_PROC_PATHNAME -#[no_mangle] pub extern "C" fn jerboa_proc_self_exe( output: *mut u8, output_len: usize, --- a/jerboa-native-rs/src/regex_native.rs +++ b/jerboa-native-rs/src/regex_native.rs @@ -166,7 +166,6 @@ pub extern "C" fn jerboa_regex_free(handle: u64) -> i32 { /// Compile with PCRE2-compatible flags bitmask. /// Flags: 0x8=CASELESS, 0x20=DOTALL, 0x400=MULTILINE, 0x80000=UTF (ignored, always UTF-8) /// Returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_regex_compile_ex( pattern: *const u8, pattern_len: usize, --- a/jerboa-native-rs/src/socks5_server.rs +++ b/jerboa-native-rs/src/socks5_server.rs @@ -107,7 +107,6 @@ struct ServerConfig { /// Returns handle (>0) on success, 0 on error. /// /// `username`/`password` pointers may be null for no-auth mode. -#[no_mangle] pub extern "C" fn jerboa_socks5_server_start( bind_addr: *const u8, bind_addr_len: usize, @@ -219,7 +218,6 @@ pub extern "C" fn jerboa_socks5_server_start( /// Stop a running SOCKS5 proxy server. /// Returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_socks5_server_stop(handle: u64) -> i32 { match std::panic::catch_unwind(|| { let mut map = servers().lock().unwrap(); @@ -246,7 +244,6 @@ pub extern "C" fn jerboa_socks5_server_stop(handle: u64) -> i32 { /// Get the actual bound port of a SOCKS5 server. /// Returns port (>0) on success, 0 on error. -#[no_mangle] pub extern "C" fn jerboa_socks5_server_port(handle: u64) -> u16 { match std::panic::catch_unwind(|| { let map = servers().lock().unwrap(); @@ -266,7 +263,6 @@ pub extern "C" fn jerboa_socks5_server_port(handle: u64) -> u16 { /// Get stats: active connections and total connections. /// Writes "active:N total:N" to buf. /// Returns bytes written (>0) or -1 on error. -#[no_mangle] pub extern "C" fn jerboa_socks5_server_stats(handle: u64, buf: *mut u8, buf_len: usize) -> i32 { match std::panic::catch_unwind(|| { if buf.is_null() || buf_len == 0 { --- a/jerboa-native-rs/src/tls.rs +++ b/jerboa-native-rs/src/tls.rs @@ -733,7 +733,6 @@ pub extern "C" fn jerboa_tls_server_new( /// Create a TLS server context from in-memory PEM cert and key data. /// Same as jerboa_tls_server_new but reads from byte buffers instead of files. /// Returns context handle (>0) on success, 0 on error. -#[no_mangle] pub extern "C" fn jerboa_tls_server_new_pem( cert_pem: *const u8, cert_pem_len: usize, @@ -859,7 +858,6 @@ pub extern "C" fn jerboa_tls_accept(server_ctx: u64, fd: i32) -> u64 { /// client_ca_pem: CA cert PEM bytes used to verify client certificates. /// Clients without a valid cert signed by this CA are rejected at the TLS handshake. /// Returns context handle (>0) on success, 0 on error. -#[no_mangle] pub extern "C" fn jerboa_tls_server_new_mtls_pem( cert_pem: *const u8, cert_pem_len: usize, @@ -1315,7 +1313,6 @@ pub extern "C" fn jerboa_tls_connect_mtls( /// The server's cert is chain-verified against ca_pem. The client /// presents cert_pem/key_pem as its identity. Returns handle ID (>0) on /// success, 0 on error. -#[no_mangle] pub extern "C" fn jerboa_tls_connect_mtls_pem_ca( host: *const u8, host_len: usize, @@ -1448,7 +1445,6 @@ pub extern "C" fn jerboa_tls_connect_mtls_pem_ca( /// mTLS connect using in-memory cert/key data (no file paths). /// Avoids /proc/self/fd/ which Android SELinux may block. /// Returns handle ID (>0) on success, 0 on error. -#[no_mangle] pub extern "C" fn jerboa_tls_connect_mtls_mem( host: *const u8, host_len: usize, --- a/jerboa-native-rs/src/wasm.rs +++ b/jerboa-native-rs/src/wasm.rs @@ -216,7 +216,6 @@ pub extern "C" fn jerboa_wasm_instance_free(handle: u64) { /// /// SAFETY: `fd` must be a valid, owned UDP socket file descriptor. /// Returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_wasm_set_socket(instance_handle: u64, fd: i32) -> i32 { ffi_wrap(|| { let mut instances = wasm_instances().lock().unwrap(); @@ -249,7 +248,6 @@ pub extern "C" fn jerboa_wasm_set_socket(instance_handle: u64, fd: i32) -> i32 { /// The WASM guest can only open CDB files under these directories. /// path_ptr/path_len: UTF-8 directory path. /// Returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_wasm_allow_cdb_dir( instance_handle: u64, path_ptr: *const u8, --- a/jerboa-native-rs/src/wasm_sm.rs +++ b/jerboa-native-rs/src/wasm_sm.rs @@ -934,7 +934,6 @@ pub extern "C" fn jerboa_sm_call( // FFI: Memory access (stubs — full impl requires persistent instance) // ============================================================ -#[no_mangle] pub extern "C" fn jerboa_sm_memory_read( _handle: u64, _offset: u32, @@ -944,7 +943,6 @@ pub extern "C" fn jerboa_sm_memory_read( -1 } -#[no_mangle] pub extern "C" fn jerboa_sm_memory_write( _handle: u64, _offset: u32, @@ -954,7 +952,6 @@ pub extern "C" fn jerboa_sm_memory_write( -1 } -#[no_mangle] pub extern "C" fn jerboa_sm_memory_size(_handle: u64) -> i64 { -1 } @@ -968,7 +965,6 @@ pub extern "C" fn jerboa_sm_add_fuel(_handle: u64, _fuel: u64) -> i32 { 0 } -#[no_mangle] pub extern "C" fn jerboa_sm_fuel_remaining(_handle: u64) -> i64 { 0 } --- a/jerboa-native-rs/src/x25519.rs +++ b/jerboa-native-rs/src/x25519.rs @@ -6,7 +6,6 @@ use x25519_dalek::{PublicKey, StaticSecret}; /// Generate an X25519 keypair using ring's CSPRNG. /// private_out: 32-byte buffer for the private key /// public_out: 32-byte buffer for the public key -#[no_mangle] pub extern "C" fn jerboa_x25519_generate_keypair(private_out: *mut u8, public_out: *mut u8) -> i32 { ffi_wrap(|| { if private_out.is_null() || public_out.is_null() { @@ -32,7 +31,6 @@ pub extern "C" fn jerboa_x25519_generate_keypair(private_out: *mut u8, public_ou /// Compute public key from a private key. /// private_key: 32-byte private key /// public_out: 32-byte buffer for the public key -#[no_mangle] pub extern "C" fn jerboa_x25519_public_from_private( private_key: *const u8, private_len: usize, @@ -58,7 +56,6 @@ pub extern "C" fn jerboa_x25519_public_from_private( /// our_private: 32-byte private key /// their_public: 32-byte public key /// shared_out: 32-byte buffer for the shared secret -#[no_mangle] pub extern "C" fn jerboa_x25519_diffie_hellman( our_private: *const u8, priv_len: usize, @@ -97,7 +94,6 @@ pub extern "C" fn jerboa_x25519_diffie_hellman( /// salt: salt bytes (can be NULL with salt_len=0 for no salt) /// info: context/application info /// output: buffer for derived key material -#[no_mangle] pub extern "C" fn jerboa_hkdf_sha256( ikm: *const u8, ikm_len: usize, --- a/jerboa-native-rs/src/x509.rs +++ b/jerboa-native-rs/src/x509.rs @@ -259,7 +259,6 @@ pub extern "C" fn jerboa_x509_generate_self_signed( /// caller-provided buffers instead of files. /// /// Returns 0 on success, -1 on error. -#[no_mangle] pub extern "C" fn jerboa_x509_generate_self_signed_mem( ip_addrs_csv: *const u8, ip_addrs_len: usize, @@ -384,7 +383,6 @@ pub extern "C" fn jerboa_x509_generate_self_signed_mem( /// here. The lengths actually written are stored in cert_out_len / key_out_len. /// /// Returns 0 on success, -1 on error (call jerboa_last_error for details). -#[no_mangle] pub extern "C" fn jerboa_x509_generate_signed_by_ca_mem( ca_cert_pem: *const u8, ca_cert_pem_len: usize,