Исходные и целевые аргументы функции копирования имеют перекрывающуюся память
Этот дефект возникает, когда происходит перекрытие памяти между исходным и целевым аргументом функции копирования, например memcpy или strcpy. Например, исходные и целевые аргументы strcpy - указатели на различные элементы в одной строке.
При наличии перекрытия памяти между исходным и целевым аргументами функций копирования в соответствии со стандартами C поведение не определено.
Определите, требуется ли перекрытие памяти. Если да, найдите альтернативную функцию. Например:
Если используется memcpy для копирования значений из одной ячейки памяти в другую, memmove вместо memcpy.
Если используется strcpy для копирования одной строки в другую используется memmove вместо strcpy, следующим образом:
s = strlen(source); memmove(destination, source, s + 1);
strlen определяет длину строки без пустого признака конца. Поэтому вы должны двигаться s+1 байты вместо s байт.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: OVERLAPPING_COPY |
| Воздействие: среднее |
| CWE ID: 475, 628, 687 |