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 相信它不再被污染有什么想法吗?
最佳答案
我遇到过类似的问题。 以下对我有用:
- 确认环境变量已正确保存在您的系统中(对于位于“系统”>“高级设置”>“环境变量”中的窗口)
- 重新启动您用来运行代码的文本编辑器/IDE/Jupyter Notebook。
关于c - getenv 返回受污染的字符串内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54752946/