
bool TestMe(const uint8_t *Data, size_t DataSize) { return DataSize >= 3 && Data[0] == 'T' && Data[1] == 'E' && Data[2] == 'S' && Data[3] == 'T'; // :< } 1 veelog 2017-10-20 19:04:11 +08:00 via iPhone 去掉等号就完美了,不过 c 怎么还有布尔类型 |
2 veelog 2017-10-20 19:05:53 +08:00 via iPhone 作为给别人点用的接口的话还是判断下 Data!=NULL |
3 tylerdurden OP @veelog 代码来自 https://github.com/google/fuzzer-test-suite/blob/master/tutorial/fuzz_me.cc ,报了一个堆溢出,死活没看出来。 |
4 ddaii 2017-10-20 19:30:22 +08:00 当 DataSize = 3 时 ,Data[3] 不就是溢出了吗? |
5 1919yuan 2017-10-20 19:32:30 +08:00 via Android 如果 Data pointer valid,但是长度只有 3 的话,这段测试在测试 access 第四个位置会报错,over flow。如果 Data pointer 是 null 或者 0xcccccccd 之类被释放的指针,那么这段测试应该会报释放后使用的错误。前提是你使用 fuzzer-test-suite 来测试这段代码。 |
6 tylerdurden div class="badge op">OP 2017-10-20 19:36:01 +08:00 @1919yuan 学习了,感谢! |
8 mengyaoss77 2017-10-20 19:59:00 +08:00 还是要加错误处理, 在函数内部判断一下指针是否有效 |
10 yksoft1 2017-10-20 21:16:18 +08:00 @mengyaoss77 问题是不太好判断 Data 是否是野指针。 |
11 dorentus 2017-10-21 15:14:18 +08:00 via iPhone 这不是 C 是 C++ |