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测试

Download history 50856/week @ 2024-05-02 54608/week @ 2024-05-09 50344/week @ 2024-05-16 48564/week @ 2024-05-23 50128/week @ 2024-05-30 47853/week @ 2024-06-06 52006/week @ 2024-06-13 51446/week @ 2024-06-20 49428/week @ 2024-06-27 45497/week @ 2024-07-04 53736/week @ 2024-07-11 49635/week @ 2024-07-18 47657/week @ 2024-07-25 48580/week @ 2024-08-01 44489/week @ 2024-08-08 46324/week @ 2024-08-15

195,796 每月下载量
170 个 Crates 中使用(直接使用 8 个)

Apache-2.0 WITH LLVM-exception

11KB
112 代码行

此包包含“混沌模式”的控制平面。它可以在模糊测试过程中向代码的特定部分注入伪随机扰动。其编译是特性控制的,以防止对发布构建的任何性能影响。


lib.rs:

Cranelift 控制平面

这是混沌模式控制平面的家,这是一个旨在为某些模糊目标开启的编译特性。当特性关闭时,默认情况下,[ControlPlane] 将是一个零大小的类型,并会被优化掉。

当特性开启时,[ControlPlane] 结构体提供在代码特定位置提取伪随机数的功能。它可以用于针对编译器内部进行有针对性的模糊测试,例如操作启发式优化、覆盖未定义的寄存器位等。

获取 [ControlPlane] 的两种方式

  • arbitrary 用于真实情况(需要 fuzz 特性,默认启用)
  • default 用于“空”控制平面,它总是返回默认值

燃料限制

控制编译器在停止之前将执行多少次变异或优化。

当混沌模式引入的扰动触发错误时,可能无法立即确定是哪个引入的扰动触发了错误。这时可以使用燃料限制来进行二分查找触发因素。燃料限制限制了控制平面引入的扰动数量。通常,燃料限制通过传递给模糊目标的命令行参数来设置。例如

cargo fuzz run --features chaos $TARGET -- --fuel=16

no_std 支持

这个crate可以在 no_std 环境中编译,尽管 fuzzchaos 功能都依赖于 std。这意味着在 no_std 中,你不能使用 arbitrary 来初始化 [ControlPlane],也不能启用混沌模式,尽管其他常规 [ControlPlane] API 都是可用的。

依赖

~23KB