Список аргументов переменной, используемый после аннулирования с 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