Выделение буфера с помощью 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]