Вызовите к 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