从文件中读取整数值时,覆盖率检查会产生以下错误
调用函数“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'执行什么健全性检查,以确保它没有损坏。
所以问题是你使用的是污染值;)
更详细地说,readval由外部数据设置一次,然后可能用作fseek的参数。这个参数可能会让你超过文件的末尾并导致程序崩溃。
你需要进行一些检查,以确保你没有走出文件的末尾。
从fread获取readval后立即添加一个断言。确保readval在合理的范围内。
顺便说一下,你“断言”也应该在发布版本中有效