CERT.FILE_PTR.DEREF
不应取消引用指向 FILE 对象的指针。
漏洞与风险
取消引用指向 FILE 对象的指针,可能会导致意外的行为。
缓解与预防
不要取消引用指向 FILE 对象的指针。
漏洞代码示例
复制
#include <iostream>
int main()
{
FILE *pf1;
FILE *pf2;
FILE f4=*pf2;
pf2 = pf1;
if (fputs("Hello, World!\n", &f3) == EOF) {
/* Handle error */
}
return 0;
}
在此不符合要求的示例中,Klocwork 在第 8 行报告了 CERT.FILE_PTR.DEREF 缺陷,因为取消引用指向 FILE 对象的指针,可能会导致意外的行为。
修正代码示例
复制
#include <iostream>
int main()
{
FILE *pf1;
FILE *pf2;
FILE *f4=pf2;
pf2 = pf1;
if (fputs("Hello, World!\n", &f3) == EOF) {
/* Handle error */
}
return 0;
}
以上示例符合要求,因为它使用了 FILE 对象的地址,而没有使用 FILE 对象的值副本。
相关检查器
- MISRA.FILE_PTR.DEREF.2012