Функция пишет, чтобы буферизовать при смещении, больше, чем buffer size
Целевое переполнение буфера в обработке строк происходит, когда определенные функции обработки строк пишут в свой целевой буферный аргумент при смещении, больше, чем buffer size.
Например, при вызове функционального sprintf(char* buffer, const char* format), вы используете постоянную строку format большего размера, чем buffer.
Переполнение буфера может вызвать неожиданное поведение, такое как повреждение памяти или остановка вашей системы. Переполнение буфера также вводит риск инжекции кода.
Одно возможное решение состоит в том, чтобы использовать альтернативные функции, чтобы ограничить количество записанных символов. Например:
Если вы используете sprintf, чтобы записать отформатированные данные в строку, используйте snprintf, _snprintf или sprintf_s вместо этого, чтобы осуществить управление длиной. Также используйте asprintf, чтобы автоматически выделить память, требуемую для целевого буфера.
Если вы используете vsprintf, чтобы записать отформатированные данные от списка аргументов переменной до строки, используйте vsnprintf или vsprintf_s вместо этого, чтобы осуществить управление длиной.
Если вы используете wcscpy, чтобы скопировать широкую строку, используйте wcsncpy, wcslcpy или wcscpy_s вместо этого, чтобы осуществить управление длиной.
Другое возможное решение состоит в том, чтобы увеличить buffer size.
| Группа: Статическое ЗУ |
| Язык: C | C++ |
| Значение по умолчанию: на |
Синтаксис командной строки: STRLIB_BUFFER_OVERFLOW |
| Влияние: высоко |
| ID CWE: 121, 125, 135, 251, 787 |