如何在libFuzzer上使用ubsan(在clang上)?

时间:2017-10-25 07:59:31

标签: c++ clang clang++

我目前开始使用C ++进行模糊测试。按照https://github.com/google/fuzzer-test-suite/blob/master/tutorial/libFuzzerTutorial.md上的教程,我成功使用了AddressSanitizer。在该教程中,还建议至少尝试使用UBSan。

来自documentation on UBSan的示例工作正常,由于有符号整数溢出,我立即得到运行时错误。但是,当我尝试围绕示例构建一个模糊器时,我不再报告任何错误。

示例代码是

// test.cpp
int main(int argc, char **argv) {
    int k = 0x7fffffff;
    k += argc;
    return 0;
}

我用clang++ -fsanitize=undefined test.cpp -o test编译。

为了获取我的模糊器,我将代码更改为

// fuzz.cpp
#include <cstddef>

extern "C" int LLVMFuzzerTestOneInput(const char *data, size_t len)
{
    int k = 0x7fffffff;
    k += len;
    return 0;
}

并使用clang++ -fsanitize=undefined -fno-sanitize-recover=undefined -fsanitize-coverage=trace-pc-guard fuzz.cpp libFuzzer.a -o fuzz构建它。

有没有人知道我要改变什么,以便模糊器也找到有符号整数溢出?

0 个答案:

没有答案