Значение из небезопасного источника изменяет знак
Испорченное преобразование изменения знака ищет значения из небезопасных источников, которые преобразованы, неявно или явным образом, от со знаком до значений без знака.
Например, функции, которые используют 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