我正在使用HP Fortify扫描我的代码以查找可能的错误,并且这段代码不断被标记为整数溢出。但是,没有进行算术来保证溢出,并且argc受到几个条件语句的限制。尽管如此,似乎Fortify不喜欢使用argc来分配缓冲区的大小。在这种情况下,我不认为整数溢出是可能的,并且可能是这个问题是HP Fortify中的错误导致的。有关为什么Fortify将第9行标记为整数溢出的任何建议?
1 int main(int argc, char* argv[]) {
2 if ((argc < 0) || (argc > 10)) {
3 cout<< "number of arguments is invalid.";
4 return -1;
5 }
6 cout << "Number of arguments: " << argc << endl;
7
8 if ((argc > 0) && (argc < 10)) {
9 int myArray[argc]; //This line gets flagged as an integer overflow
10 } else {
11 cout<<"Argc is out of bounds."<<endl;
12 return -1;
13 }
14 return 0;
15 }
在评论中我也建议使用动态数组。不幸的是,这也不起作用,因为Fortify仍将数组初始化标记为整数溢出。