【问题标题】:getenv returns tainted string contentgetenv 返回受污染的字符串内容
【发布时间】:2019-07-12 04:07:12
【问题描述】:

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 相信它不再受到污染有什么想法吗?

【问题讨论】:

  • getenv 的返回值被“污染”,因为它返回用户定义的数据。用户可以定义环境变量。您的程序无法控制该值,因此应该实施健全性检查。

标签: c coverity getenv


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 2021-03-16
    • 1970-01-01
    • 2014-03-09
    • 2016-08-27
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多