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