EN JP CN

ASSIGCOND.GEN

ASSIGCOND.GEN

条件式の割り当て

ASSIGCOND.GEN チェッカーは、代入式を含む条件付きステートメントを検出します。

脆弱性とリスク

このチェッカーは通常、構文エラーを検出します。これは一般的に、比較演算子の代わりに代入演算子を誤って使用した場合です。このエラーを修正しないと、意図しないプログラム動作が発生する可能性があります。

脆弱コード例

1  class A{
2     void foo();
3  };
4  void A::foo()
5  {
6      int i = 1;
7      int j = 0;
8      if(i = j) j++; 
9  }

このコード例では、Klocwork は、if ステートメントに割り当てが含まれると思われるため、8 行目にフラグを立てます。

修正コード例 1

1  class A{
2     void foo();
3  };
4  void A::foo()
5  {
6      int i = 1;
7      int j = 0;
8      if((i == j)) j++; 
9  }

この修正コードでは、代入演算子が意図した比較演算子に置換されました。

修正コード例 2

1  class A{
2     void foo();
3  };
4  void A::foo()
5  {
6      int i = 1;
7      int j = 0;
8      if((i=qq()) !=0) j++; 
9  }

この修正例では、代入構文を区別するために、括弧を使用しています。

関連チェッカー