Функция пишет, чтобы буферизовать при отрицательном смещении с начала буфера
Этот дефект происходит, когда определенные функции обработки строк пишут в свой целевой буферный аргумент при отрицательном смещении с начала буфера.
Например, для функционального sprintf(char* buffer, const char* format)
, вы получаете buffer
от операции buffer = (char*)arr; ... buffer += offset;
. arr
массив и offset
отрицательная величина.
Недостаточное наполнение буфера может вызвать неожиданное поведение, такое как повреждение памяти или остановка вашей системы. Недостаточное наполнение буфера также вводит риск инжекции кода.
Если целевой буферный аргумент следует из адресной арифметики с указателями, смотрите, постепенно уменьшаете ли вы указатель. Зафиксируйте декремент указателя путем изменения или исходного значения перед декрементом или декрементного значения.
Группа: Статическое ЗУ |
Язык: C | C++ |
Значение по умолчанию: на |
Синтаксис командной строки: STRLIB_BUFFER_UNDERFLOW |
Удар: высоко |
ID CWE: 124, 786, 787 |