c - getenv 返回受污染的字符串内容

标签 c coverity getenv

Coverity 声称 getenv 正在返回一个受污染的字符串,我已经用尽了所有返回值检查的想法。我查看了与我类似的其他问题,但他们的解决方案都不适合我。

我已经尝试检查 NULL 的返回值,我已经尝试了 strdup、strncpy、memcpy,但似乎没有任何方法可以使受污染的字符串消失。

这里是原始代码,没有进行无效的检查:

void my_func()
{
   for(int port = 0; port < NUM_PORTS; port++) {
      download_id_table(port,getenv("ID_FILE")); //tainted string from getenv
   }
   download_info(getenv("INFO_FILE")); //tainted string from getenv

   //...
}

关于如何让 Coverity 相信它不再被污染有什么想法吗?

最佳答案

我遇到过类似的问题。 以下对我有用:

  1. 确认环境变量已正确保存在您的系统中(对于位于“系统”>“高级设置”>“环境变量”中的窗口)
  2. 重新启动您用来运行代码的文本编辑器/IDE/Jupyter Notebook。

关于c - getenv 返回受污染的字符串内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54752946/

相关文章:

c - 警告 : initializer element is not constant

c - 有没有办法概括 vscode 中程序特定的设置?

c - 平台条件 makefile

c++ - Coverity 发现 : Not restoring ostream format (STREAM_FORMAT_STATE)

java - Travis CI + Coverity 使用 Gradle 进行扫描

c - 多次调用 Getenv() 时出错

c - 实现 malloc 时出现段错误

Coverity 对局部变量的默认初始化发出警告

c - 使用 getenv 和 env 不会给出相同的结果 :

C++ 通过调用 system() 获取变量集