libfuzzer 中的单例
Singleton in libfuzzer
在 libfuzzer 中创建的单例是“每个 运行 一个实例”还是“每个多个 运行 一个实例”?
示例:
// singleton example
int& Singleton() {
static int a = 0;
return a;
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size) {
// Usage example
Singleton() += Size;
}
- 1 运行: Size = 10.Singleton() == 10
- 2 运行: Size = 20.Singleton() == 20(“每个 运行 一个实例”)或 Singleton() == 30(“每个 [=21 一个实例=]s")
迟到的答案 - 每多次运行只有一个实例。
在 libfuzzer 中创建的单例是“每个 运行 一个实例”还是“每个多个 运行 一个实例”?
示例:
// singleton example
int& Singleton() {
static int a = 0;
return a;
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* Data, size_t Size) {
// Usage example
Singleton() += Size;
}
- 1 运行: Size = 10.Singleton() == 10
- 2 运行: Size = 20.Singleton() == 20(“每个 运行 一个实例”)或 Singleton() == 30(“每个 [=21 一个实例=]s")
迟到的答案 - 每多次运行只有一个实例。