Вызов 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