Invalid use of standard library integer routine

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

Описание

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

  • Преобразование символов

    toupper, tolower

  • Символьные проверки

    isalnum, isalpha, iscntrl, isdigit, isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit

  • Целочисленное деление

    div, ldiv

  • Абсолютные значения

    abs, labs

Фиксация

Фиксация зависит от первопричины дефекта. Часто детали результата показывают последовательность событий, которые привели к дефекту. Можно реализовать закрепление на любом событии в последовательности. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.

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

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

Примеры

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

#include <limits.h>
#include <stdlib.h>

int absoluteValue(void) {

    int neg = INT_MIN;
    return abs(neg);
}

Входное значение к abs INT_MIN. Абсолютное значение INT_MIN INT_MAX+1. Этот номер не может быть представлен типом int.

Коррекция — изменяет входной параметр

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

#include <limits.h>
#include <stdlib.h>

int absoluteValue(void) {

    int neg = INT_MIN+1;
    return abs(neg);
}

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

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

Введенный в R2013b