mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 11:18:24 +00:00
Moves every pin in tools/arti-build forward and rebuilds all three shipped libraries from them. Arti 2.5.0 carried two medium-severity fixes that a client reaches in normal use, so the shipped 2.3.0 was the reason to do this now: TROVE-2026-24, where a malicious directory mirror crashes the tor-netdoc parser and eventually stops tor-dirmgr, and TROVE-2026-27, an inefficient algorithm an attacker can drive into a CPU stall. Pins: - Arti 2.3.0 -> 2.6.0 (arti-client / tor-rtcompat 0.42 -> 0.46). New MSRV is 1.91, satisfied by the pinned toolchain. - Android NDK 27.3.13750724 (r27d) -> 30.0.16248370 (r30), the current LTS. clang and lld move 18.0.4 -> 21.0.0. - rustc 1.94.1 -> 1.98.1. - jni 0.21 -> 0.22. - Cargo.lock regenerated, so every transitive dependency moves to its latest semver-compatible release. cargo-ndk was already on the pinned 4.1.2. Source changes the upgrades required: - Arti 2.4.0 made every TorClient constructor return an Arc<TorClient> and dropped Clone from TorClient, so the wrapper no longer wraps it itself. - jni 0.22 splits the FFI environment pointer (EnvUnowned) from the API type (Env), which is only borrowed inside a closure. Native methods now acquire it via with_env and map failures through an ErrorPolicy instead of unwinding out of extern "C", which aborts. initialize() reads everything JNI-owned up front and resolves through Option<String>, because the policy default for jint is 0, the value that API reports as success. GlobalRef became Global<JObject>, thread attachment takes a closure (which also scopes a local-reference frame per log line), and the method name and signature are encoded at compile time via jni_str! / jni_sig!. Verification: - verify-reproducible.sh: two clean builds byte-for-byte identical, JNI symbols exported, 16 KiB LOAD alignment kept, both ABIs stamped r30, same libc/libm/libdl dependency set as before. - JVM tier-3 smoke test passes against the rebuilt host shim, and a scratch harness drove setLogCallback, getVersion, initialize and destroy through real JNI: log lines arrive over the migrated callback and initialize returns 0. - cargo audit: rsa 0.9.10 (RUSTSEC-2023-0071) remains, with no fixed version published upstream; it arrives via ssh-key-fork-arti and needs RSA private key operations, which a client without hosted onion services never does. The event-listener unsound and spin yanked warnings are gone. Not verified here: the network-dependent integration tier and the on-device instrumented test. This container blocks most outbound TCP (directory authority port 9131 among them), so Tor circuits time out regardless of which library is loaded. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011cSuXeu4bUTNRAUCZJcLLW
2 lines
14 B
Plaintext
2 lines
14 B
Plaintext
30.0.16248370
|