使用argc分配缓冲区 - 可能溢出?

时间:2017-05-18 23:28:11

标签: c++ integer-overflow fortify argc

我正在使用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仍将数组初始化标记为整数溢出。

0 个答案:

没有答案