Invalid use of standard library routine

Неправильные аргументы к стандартной библиотечной функции

Описание

Этот дефект происходит, когда вы используете недействительные аргументы с функцией от стандартной библиотеки. Этот дефект берет ошибки, связанные с другими функциями, не покрытыми плаванием, целым числом, памятью или библиотечными подпрограммами стандарта строки.

Риск

Недействительные аргументы к стандартной библиотечной функции приводят к неопределенному поведению.

Фиксация

Фиксация зависит от первопричины дефекта. Например, аргумент к printf функцией может быть NULL потому что указатель был инициализирован NULL и значение инициализации не было перезаписано вдоль определенного пути к выполнению.

Смотрите примеры мер ниже.

Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

Примеры

развернуть все

#include <stdio.h>
#include <stdlib.h>

void print_null(void) {

  printf(NULL); 
}

Функциональный printf берет только входные параметры строки или спецификаторы формата. В этой функции входным значением является NULL, который не является допустимой строкой.

Коррекция — использует совместимые входные параметры

Одна возможная коррекция должна изменить входные параметры, чтобы соответствовать требованиям стандартной библиотечной подпрограммы. В этом примере входной параметр был изменен на символ.

#include <stdio.h>

void print_null(void) {
    char zero_val = '0';
    printf((const char*)zero_val); 
}

Проверяйте информацию

Группа: Программирование
Язык: C | C++
Значение по умолчанию: на
Синтаксис командной строки: OTHER_STD_LIB
Удар: высоко
ID CWE: 227, 690

Введенный в R2013b