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

时间:2019-02-18 18:00:40

标签: 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 个答案:

答案 0 :(得分:0)

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

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