如何在fread中处理Coverity错误TAINTED_SCALAR

时间:2014-07-16 04:29:19

标签: fread coverity

从文件中读取整数值时,覆盖率检查会出现以下错误

调用函数“fread”taints参数“readval”

//coverity note: Calling function "fread" taints argument "readval".
if(fread(&readval, sizeof(int), 1, fp) < 1) {
    return;
} else {
    //coverity note: Passing tainted variable "readval" to a tainted sink.
    f1(&readval);
}

如何处理此错误? 我需要为'readval'执行什么健全性检查以确保它没有损坏。

2 个答案:

答案 0 :(得分:1)

所以问题是你正在使用受污染的值;)

更详细地说,readval由外部数据设置一次,然后可能用作fseek的参数。这个论点可能会让你超过文件的末尾并导致你的程序崩溃。

你需要进行一些检查,以确保你不会走出文件的末尾。

答案 1 :(得分:0)

从fread获得readval后立即添加一个断言。确保readval在合理范围内。

顺便说一句,您“断言”在发行版中也应有效