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

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

Описание

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

Риск

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

Фиксация

Фиксация зависит от первопричины дефекта. Например, аргументом к функции 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