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 相信它不再受到污染的任何想法?