如何定位libFuzzer针对PHP源码生成的NEW_FUNC对应测试用例
libFuzzer中NEW_FUNC对应测试用例的查找方案
可行性说明
这种查找完全可行,属于libFuzzer的设计支持范围,并非超出其用途。
具体实现方法
- 实时追踪:当libFuzzer输出
NEW_FUNC日志时,会自动将触发新代码覆盖的测试用例写入corpus目录(或通过-artifact_prefix指定的路径)。此时查看corpus中最新生成的哈希命名文件,就是触发zend_hash_packed_grow的目标用例。 - 事后批量验证:如果错过实时时机,可通过以下方式批量筛选:
- 使用
llvm-cov配合你的fuzzer二进制文件,逐个运行corpus中的文件,检查是否覆盖了zend_hash_packed_grow(对应路径/php-src/Zend/zend_hash.c:312)。 - 编写脚本遍历corpus目录,对每个文件执行fuzzer并收集覆盖数据,基于
clang的-fsanitize-coverage相关选项筛选出符合条件的用例。
- 使用
额外提示
你使用的fuzzer-parser.c是PHP解析器专用fuzzer,触发目标函数的测试用例通常是能触发哈希表扩容的PHP代码(比如创建大规模数组、特定结构的数组操作等)。
内容的提问来源于stack exchange,提问作者JSowa
相关产品推荐
相关产品推荐

