Список аргументов переменной, используемый после признания недействительным с 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++ |
| По умолчанию: On для рукописного кода, off для сгенерированного кода |
Синтаксис командной строки: INVALID_VA_LIST_ARG |
| Влияние: Высокий |
| ИДЕНТИФИКАТОР CWE: 628 |