SV.FMT_STR.PRINT_IMPROP_LENGTH
互換性のない長さ修飾子
特定のタイプの書式指定では、h、l、L などのパラメーターの長さ修飾子を書式文字列で使用できます。SV.FMT_STR.PRINT_IMPROP_LENGTH チェッカーは、長さ修飾子を指定の書式指定子とともに使用できない場合に警告を生成します。 たとえば、指定 %hf では、長さ修飾子 h を %f 書式指定子とともに使用しても意味がありません。
脆弱性とリスク
通常、コンパイラは、互換性のない長さ修飾子を無視します。ただし、そのような使用事例は、ディベロッパーが別の書式指定を使おうとしたが間違えたため、Klocwork の警告によって設計者が正しい指定の変更を検討してしまうことを示す場合があります。
軽減と防止
パラメーターと長さ修飾子の互換性は、使用している特定のコンパイラによって異なるため、MSDN Web サイトや適切な fprintf Linux man pages などのコンパイラ別ヘルプまたはドキュメンテーションを確認するのが最適です。一般的なリソースドキュメントは CERT サイトの記事、FIO00-C: 書式文字列の作成における注意点 。
関連チェッカー
- SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD
- SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED
- SV.FMT_STR.SCAN_FORMAT_MISMATCH.BAD
- SV.FMT_STR.SCAN_FORMAT_MISMATCH.UNDESIRED
- SV.FMT_STR.PRINT_IMPROP_LENGTH
- SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW
- SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY
- SV.FMT_STR.SCAN_IMPROP_LENGTH
- SV.FMT_STR.SCAN_PARAMS_WRONGNUM.FEW
- SV.FMT_STR.SCAN_PARAMS_WRONGNUM.MANY
- SV.FMT_STR.UNKWN_FORMAT
- SV.FMT_STR.UNKWN_FORMAT.SCAN