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