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