STRONG.TYPE.JOIN.CMP
別の強い型の比較
チェッカーの STRONG.TYPE ファミリーは、プログラマーが行う強い型指定 (型が定義された抽象型) が違反または無視され、基礎となる ANSI 型セマンティックスが優先される状況を検出します。
STRONG.TYPE.JOIN.CMP チェッカーは、2 つの異なる強い型の値が >、≥、<、または ≤ の各演算子を使用して比較されているインスタンスを検出します。
脆弱性とリスク
ANSI 規格対応のコンパイラは、表面の (プログラマーが定義する) 型ではなく、基底型をチェックするだけであるため、このような指摘に関する警告を報告しません。この結果、論理エラーが発生する可能性があります。
脆弱コード例
1 typedef int Count; 2 typedef int Weight; 3 4 int main() { 5 Weight w; 6 Count c; 7 if (w >= c) ; 8 return 0; 9 }
Klocwork 異なる強い型、Count および Weight の値が >= 演算子を使用して比較されていることを示す 7 行目にフラグを立てます。