46 个版本 (15 个重大变更)
新 0.111.0 | 2024 年 8 月 20 日 |
---|---|
0.110.1 | 2024 年 7 月 22 日 |
0.106.0 | 2024 年 3 月 20 日 |
0.103.0 | 2023 年 12 月 20 日 |
0.98.1 | 2023 年 7 月 24 日 |
#380 在 测试 中
195,796 每月下载量
在 170 个 Crates 中使用(直接使用 8 个)
11KB
112 代码行
此包包含“混沌模式”的控制平面。它可以在模糊测试过程中向代码的特定部分注入伪随机扰动。其编译是特性控制的,以防止对发布构建的任何性能影响。
lib.rs
:
Cranelift 控制平面
这是混沌模式控制平面的家,这是一个旨在为某些模糊目标开启的编译特性。当特性关闭时,默认情况下,[ControlPlane] 将是一个零大小的类型,并会被优化掉。
当特性开启时,[ControlPlane] 结构体提供在代码特定位置提取伪随机数的功能。它可以用于针对编译器内部进行有针对性的模糊测试,例如操作启发式优化、覆盖未定义的寄存器位等。
获取 [ControlPlane] 的两种方式
燃料限制
控制编译器在停止之前将执行多少次变异或优化。
当混沌模式引入的扰动触发错误时,可能无法立即确定是哪个引入的扰动触发了错误。这时可以使用燃料限制来进行二分查找触发因素。燃料限制限制了控制平面引入的扰动数量。通常,燃料限制通过传递给模糊目标的命令行参数来设置。例如
cargo fuzz run --features chaos $TARGET -- --fuel=16
no_std
支持
这个crate可以在 no_std
环境中编译,尽管 fuzz
或 chaos
功能都依赖于 std
。这意味着在 no_std
中,你不能使用 arbitrary 来初始化 [ControlPlane],也不能启用混沌模式,尽管其他常规 [ControlPlane] API 都是可用的。
依赖
~23KB