Список аргументов переменной, используемый после аннулирования с 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 |
| Удар: высоко |
| ID CWE: 628 |
Find defects (-checkers) | Incorrect data type passed to va_arg