Вызов setenv
или putenv
функция семейства изменяет окружение, на которую указывает указатель
Этот дефект возникает, когда вы используете третий аргумент main () в размещённом окружении для доступа к окружению после изменения операции окружения. В размещённом окружении многие реализации C поддерживают нестандартный синтаксис:
main (int argc, char *argv[], char *envp[])
setenv
или putenv
функция семейства изменяет окружение, на которую указывает *envp
.Когда вы изменяете окружение через вызов setenv
или putenv
family function, память окружения потенциально может быть перераспределена. Размещенный указатель окружения не обновляется и может указывать на неправильное расположение. Вызов этого указателя может вернуть неожиданные результаты или вызвать ненормальное завершение программы.
Не используйте размещенный указатель окружения. Вместо этого используйте глобальную внешнюю переменную environ
в Linux®, _environ
или _wenviron
в Windows®или их эквивалент. При изменении окружения эти переменные обновляются.
Группа: Программирование |
Язык: C | C++ |
По умолчанию: On для рукописного кода, off для сгенерированного кода |
Синтаксис командной строки
: INVALID_ENV_POINTER |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE: 825 |
Find defects (-checkers)
| Misuse of return value from nonreentrant standard function
| Modification of internal buffer returned from nonreentrant standard function