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

外部参考資料