Список переменных аргументов, использованный после признания недействительным с va_end или не инициализирован с помощью va_start или va_copy
Этот дефект возникает при использовании va_list переменная в качестве аргумента функции в vprintf группа, но:
Вы не инициализируете переменную ранее с помощью va_start или va_copy.
Вы аннулируете переменную ранее с помощью va_end и не инициализируйте его повторно.
Например, вызывается функция. vsprintf как vsprintf (buffer,format, args). Однако перед вызовом функции инициализация не выполняется. va_list переменная args используя одно из следующих действий:
va_start(args, paramName). paramName является последним именованным аргументом функции переменного аргумента. Например, для определения функции void func(int n, char c, ...) {}, c является последним именованным аргументом.
va_copy(args, anotherList). anotherList является другим действительным va_list переменная.
Поведение неинициализированного va_list аргумент не определен. Вызов функции с неинициализированной va_list аргумент может вызвать переполнение стека.
Перед использованием va_list переменная в качестве аргумента функции, инициализировать ее с помощью va_start или va_copy.
Очистить переменную с помощью va_end только после всех видов использования переменной.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки: INVALID_VA_LIST_ARG |
| Воздействие: Высокое |
| ИДЕНТИФИКАТОР CWE: 628 |