Спецификаторы формата в printf-like функции не соответствуют соответствующим аргументам
Этот дефект возникает, когда спецификаторы формата в форматированных функциях вывода, таких как printf не соответствуют их соответствующим аргументам. Например, аргумент типа unsigned long должен иметь спецификацию формата %lu.
Несоответствие между спецификаторами формата и соответствующими аргументами приводит к неопределенному поведению.
Убедитесь, что спецификаторы формата соответствуют соответствующим аргументам. Например, в этом примере %d спецификатор не соответствует строковому аргументу message и %s спецификатор не соответствует целочисленному аргументу err_number.
const char *message = "License not available";
int err_number = ;-4
printf("Error: %d (error type %s)\n", message, err_number);В случаях, когда целочисленное продвижение изменяет воспринимаемый тип данных аргумента, результат анализа показывает как исходный тип, так и тип после продвижения. Спецификатор формата должен соответствовать типу после целочисленного повышения.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл. |
Синтаксис командной строки: STRING_FORMAT |
| Воздействие: Низкий |
| CWE ID: 683, 685, 686 |
Find defects (-checkers) | Invalid use of standard library string routine