我想弄清楚现有的stbi线束的线束,并做一个小的改变。从free(img)到if(img) free(img);
使用此命令clang -fsanitize=fuzzer,address -ggdb -O0 stbi_read_fuzzer.c -o fuzzer编译,并使用./fuzzer corpus -fork=1 -ignore_crashes=1 -dict=jpeg.dict -seed=123运行
几个小时后,它会产生一些崩溃(全局缓冲区溢出,堆在空闲后使用,缓冲区溢出)。但是当我运行所有的崩溃文件时,它没有崩溃
aldo@vps:~/stb/tests$ ./fuzzer crash-edab9036233c269e258fe93c2a46d46d5d6e7112
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 2279336272
INFO: Loaded 1 modules (2132 inline 8-bit counters): 2132 [0x61b510, 0x61bd64),
INFO: Loaded 1 PC tables (2132 PCs): 2132 [0x5d0258,0x5d8798),
./fuzzer: Running 1 inputs 1 time(s) each.
Running: crash-edab9036233c269e258fe93c2a46d46d5d6e7112
Executed crash-edab9036233c269e258fe93c2a46d46d5d6e7112 in 3 ms
***
*** NOTE: fuzzing was not performed, you have only
*** executed the target code on a fixed set of inputs.
***为什么它没有坠毁?我使用的是llvm12来自apt.llvm.org的ubuntu20.04
发布于 2022-02-27 19:20:15
老问题,但我也有类似的问题。
在我的例子中,我模糊了一个有状态的API,并忘记在LLVMFuzzerTestOneInput的开头重新设置API。因此,以前的调用将API设置为无效状态,但它没有立即崩溃。只有在第二次调用时,API才会崩溃。
因此,我的猜测是,类似地,在您的工具中,某些内部状态/全局变量在之前的调用中发生了更改。试着重置一切。
这是因为libFuzzer在进程中运行,并且尽可能频繁地调用LLVMFuzzerTestOneInput函数。这个程序不会单独重新初始化。我是记录在案
https://stackoverflow.com/questions/69248386
复制相似问题