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

外部指导