Значение из небезопасного источника изменяет знак
Этот дефект происходит, когда значения из незащищенных источников преобразованы, неявно или явным образом, от со знаком до значений без знака.
Например, функции то использование size_t
когда аргументы неявно преобразуют аргумент в беззнаковое целое. Некоторые функции, которые неявно преобразуют size_t
:
bcmp memcpy memmove strncmp strncpy calloc malloc memalign
Если вы преобразуете маленькое отрицательное число в без знака, результатом является большое положительное число. Большое положительное число может создать уязвимости системы обеспечения безопасности. Например, если вы используете значение без знака в:
Стандартные программы емкости памяти — причины, выделяющие проблемы памяти.
Стандартные программы обработки строк — вызывают переполнение буфера.
Контуры цикла — вызывают бесконечные циклы.
Чтобы постараться не преобразовывать отрицательные величины без знака, проверяйте, что преобразовываемое значение в допустимом диапазоне. Например, если значение представляет размер, подтвердите это, значение не отрицательно и меньше, чем размер максимального значения.
Группа: испорченные данные |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: TAINTED_SIGN_CHANGE |
Удар: носитель |
ID CWE: 128, 131, 192, 194, 195 |
Find defects (-checkers)
| Sign change integer conversion overflow