EN JP CN

STRONG.TYPE.ASSIGN.ARG

STRONG.TYPE.ASSIGN.ARG

予期しない強い型の引数の割り当て

チェッカーの STRONG.TYPE ファミリーは、プログラマーが行う強い型指定 (型が定義された抽象型) が違反または無視され、基礎となる ANSI 型セマンティックスが優先される状況を検出します。

STRONG.TYPE.ASSIGN.ARG チェッカーは、強い型が一致しない引数の受け渡しを検出します。

脆弱性とリスク

ANSI 規格対応のコンパイラは、表面の (プログラマーが定義する) 型ではなく、基底型をチェックするだけであるため、このような指摘に関する警告を報告しません。この結果、論理エラーが発生する可能性があります。

脆弱コード例

1 typedef int Weight;
2 typedef int Speed;
3
4 void foo(Speed s) {}
5
6 int main() {
7   Weight w;
8   foo(w); 
9   return 0;
10 }

Klocwork 強い型 Weight の引数が渡されたが、強い型 Speed の引数が期待されていることを示す 8 行目にフラグを立てます。