Значение от незащищенного знака изменения источника
Этот дефект возникает, когда значения из небезопасных источников преобразуются, неявно или явно, из подписанных в неподписанные значения.
Для примера функций, которые используют size_t
как аргументы неявно преобразуют аргумент в беззнаковое целое число. Некоторые функции, которые неявно преобразуют size_t
являются:
bcmp memcpy memmove strncmp strncpy calloc malloc memalign
-consider-analysis-perimeter-as-trust-boundary
.Если преобразовать маленькое отрицательное число в беззнаковое, результатом будет большое положительное число. Большое положительное число может создать уязвимости безопасности. Для примера, если вы используете беззнаковое значение в:
Стандартные программы размера памяти - вызывают проблемы с выделением памяти.
Стандартные программы манипуляции строками - вызывает переполнение буфера.
Контуры цикла - вызывает бесконечные циклы.
Чтобы избежать преобразования беззнаковых отрицательных значений, проверяйте, что преобразуемое значение находится в допустимой области значений. Для примера, если значение представляет размер, проверьте, что значение не отрицательное и меньше максимального размера.
Группа: испорченные данные |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки: TAINTED_SIGN_CHANGE |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE: 128, 131, 192, 194, 195 |
-consider-analysis-perimeter-as-trust-boundary
| Find defects (-checkers)
| Sign change integer conversion overflow