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