Функция пытается изменить внутренний буфер, возвращенный в неповторно используемую стандартную функцию
Этот дефект происходит, когда следующее происходит:
Неповторно используемая стандартная функция возвращает указатель.
Вы пытаетесь записать в ячейку памяти, что указатель указывает на.
Неповторно используемые стандартные функции, которые возвращают не const
- квалифицированный указатель на внутренний буфер включает getenv
, getlogin
, crypt
, setlocale
, localeconv
, strerror
и другие.
Изменение внутреннего буфера, что неповторно используемая стандартная функция возвраты может вызвать следующие проблемы:
Возможно, что модификация не следует или изменяет другие внутренние данные.
Например, getenv
возвращает указатель на значение переменной окружения. Если вы изменяете это значение, вы изменяете среду процесса и повреждаете другие внутренние данные.
Даже если модификация успешно выполняется, возможно, что последующий вызов той же стандартной функции не возвращает ваше модифицированное значение.
Например, вы изменяете значение переменной окружения что getenv
возвращается. Если другой процесс, поток или обработчик сигнала вызывают setenv
, модифицированное значение перезаписывается. Поэтому последующий вызов getenv
не возвращает ваше модифицированное значение.
Постарайтесь не изменять внутренний буфер с помощью указателя, возвращенного в функцию.
Группа: Программирование |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки: WRITE_INTERNAL_BUFFER_RETURNED_FROM_STD_FUNC |
Удар: низко |
ID CWE: 573, 628 |