首页 > 解决方案 > 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 相信它不再受到污染的任何想法?

标签: ccoveritygetenv

解决方案


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

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

推荐阅读