7

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

调用函数“fread”污染参数“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”执行什么健全性检查以确保它没有损坏。

4

2 回答 2

2

所以问题是你使用了一个被污染的值;)

更详细地说,readval 由外部数据设置一次,然后可能用作 fseek 的参数。此参数可能会使您超出文件末尾并导致程序崩溃。

您需要进行一些检查以确保您不会离开文件的末尾。

于 2014-07-21T18:08:54.413 回答
0

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

顺便说一句,您的“断言”在发布版本中也应该有效

于 2018-09-05T02:09:20.343 回答