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