EN JP CN

PRECISION.LOSS

PRECISION.LOSS

精度の損失

PRECISION.LOSS チェッカーは、もっと小さいデータ型に対する暗黙的なキャストによってデータ精度の損失が起こる可能性のあるインスタンスを検出します。

脆弱性とリスク

詳細な環境によっては、インスタンスのこの状況は、バッファオーバーフローになる場合、悪用される可能性があります。

軽減と防止

精度の損失キャストが意図的なら、キャスト元を適切なビットマスクでマスクする必要があります。たとえば、次のようになります。

char c = (i & 0xFF);

脆弱コード例

1  void foo(int i) {
2      char c;
3      c = i; 
4  }

Klocwork もっと小さいデータ型に対する暗黙的なキャスト char 'c' がある 3 行目にフラグを立てます。

関連チェッカー