PRECISION.LOSS.INIT
初期化中の精度の損失
PRECISION.LOSS.INIT 欠陥は、初期化中により小さいデータ型への暗黙的なキャストによって精度 (データ) の損失が引き起こされる可能性がある場合に報告されます。
脆弱性とリスク
詳細な環境によっては、インスタンスのこの状況は、バッファオーバーフローになる場合、悪用される可能性があります。
脆弱コード例
コピー
void foo(int i) {
char c = i; // PRECISION.LOSS.INIT
}
Klocwork は、int が char に変換される 2 行目で PRECISION.LOSS.INIT 欠陥のフラグを立てます。
修正コード例
コピー
void foo(int i) {
char c = (i & 0xFF);
}
キャストのソースが適切なビットマスクでマスクされているため、Klocwork は 2 行目で PRECISION.LOSS.INIT 欠陥のフラグを立てなくなります。
関連チェッカー
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。