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