lbl
d49b7e6651
fix(jni): 全部 18 个 JNI 导出函数加 catch_unwind 防护
问题:vnt-jni 的 extern "system" 导出函数没有任何 panic 防护,
core 内任何 panic(unwrap/索引越界/断言等)跨 FFI unwind 会直接
abort 宿主 JVM。
修复:新增 catch_jni_panic(catch_unwind + AssertUnwindSafe)与
jni_guard! 宏,包裹全部 18 个导出函数:panic 时提取 payload 消息、
向 JVM 抛 RuntimeException 并返回该类型的默认值(jboolean/jint 0、
jlong -1、指针 null_mut、void 直接返回)。业务逻辑与签名不变。
说明:排查中发现报告举例的 core/mod.rs:140 expect 在当前代码下
实际不可达(no_tun=true 时 internal_nat_inbound 必为 Some),
但 FFI panic 防护本身仍然必要。
测试:3 个 catch_jni_panic 单测(正常值透传、&str/String payload
消息提取);cargo clippy --workspace --all-targets -- -D warnings 通过。
2026-08-21 01:45:30 +08:00
..
2026-02-24 18:31:40 +08:00
2026-08-21 01:45:30 +08:00
2026-08-20 20:58:07 +08:00