1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2014年12月30日 |
---|
#25 在 #audit
19KB
403 代码行
unsafe_ls
列出不安全块及其内部的不安全操作,以便更容易审计需要额外仔细检查的区域。这不能捕获由不良的 unsafe
代码在安全代码中引起的内存不安全操作,但正确编写/审计的 unsafe
块不会引起此类问题。
它可以用来仅显示包含非FFI不安全性的块,以避免在大量的“常规”C调用中过滤。
遗憾的是,#11792 意味着你可能需要传递 -L
指向包含核心库的目录(如 std
等)或编辑 DEFAULT_LIB_DIR
静态变量以避免重复。
示例
查看所有标志,请参阅 unsafe_ls -h
。
除了 FFI 之外的所有 unsafe
$ ./unsafe_ls -n test.rs
test.rs:3:1: fn with 1 static mut
x += 1
test.rs:7:5: block with 1 deref, 1 static mut
*std::ptr::null::<int>();
x += 1;
test.rs:11:5: block with 1 unsafe call
foo()
仅 FFI
$ ./unsafe_ls -f test.rs
test.rs:11:5: block with 1 ffi, 1 unsafe call
abort()
test.rs:17:5: block with 1 ffi
abort()
所有 unsafe
$ ./unsafe_ls -nf test.rs
test.rs:3:1: fn with 1 static mut
x += 1
test.rs:7:5: block with 1 deref, 1 static mut
*std::ptr::null::<int>();
x += 1;
test.rs:11:5: block with 1 ffi, 1 unsafe call
foo();
abort()
test.rs:17:5: block with 1 ffi
abort()
构建
cargo build --release
已知在 Rust master aa0e35bc6 2014-07-22 上工作。
用户评价
我使用它提交了 #12445,减少了 transmute
的数量(因为这些非常不安全),以及其他一些小的改动。