Объект, объявленный с помощью const квалификатор изменен
Этот дефект возникает при выполнении одного из следующих действий:
Использовать const-квалифицированный объект в качестве места назначения.
Пройти а const- квалифицированный объект для функции, изменяющей аргумент.
Например, дефект может возникнуть в следующих ситуациях:
Вы передаете const-квалифицированный объект в качестве первого аргумента одной из следующих функций:
mkstemp
mkostemp
mkostemps
mkdtemp
Вы передаете const-квалифицированный объект в качестве целевого аргумента одной из следующих функций:
strcpy
strncpy
strcat
memset
Вы выполняете операцию записи для const-квалифицированный объект.
Риск зависит от изменений, внесенных в const-квалифицированный объект.
| Ситуация | Риск |
|---|---|
Переход к mkstemp, mkostemp, mkostemps, mkdtempи так далее. | Эти функции заменяют последние шесть символов их первого аргумента строкой. Поэтому они ожидают изменяемого char массив в качестве их первого аргумента. |
Переход к strcpy, strncpy, strcat, memset и так далее. | Эти функции изменяют аргумент назначения. Поэтому они ожидают изменяемого char массив в качестве целевого аргумента. |
| Запись в объект | const квалификатор подразумевает согласие с тем, что значение объекта не будет изменено. Написав в const-квалифицированный объект, соглашение разрывается. Результат операции не определен. |
Исправление зависит от изменения, внесенного в const-квалифицированный объект.
| Ситуация | Зафиксировать |
|---|---|
Переход к mkstemp, mkostemp, mkostemps, mkdtempи так далее. | Передать не -const объект в качестве первого аргумента функции. |
Переход к strcpy, strncpy, strcat, memset и так далее. | Передать не -const объект в качестве целевого аргумента функции. |
| Запись в объект | Выполнение операции записи на не-const объект. |
См. примеры исправлений ниже.
Если вы не хотите устранять проблему, добавьте комментарии к результату или коду, чтобы избежать другой проверки. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки: CONSTANT_OBJECT_WRITE |
| Воздействие: Высокое |
| CWE ID: 227, 471, 686 |