ASSIGCOND.GEN

条件式の割り当て

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

脆弱性とリスク

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

脆弱コード例

コピー
  class A{
     void foo();
  };
  void A::foo()
  {
      int i = 1;
      int j = 0;
      if(i = j) j++; 
  }

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

修正コード例 1

コピー
  class A{
     void foo();
  };
  void A::foo()
  {
      int i = 1;
      int j = 0;
      if((i == j)) j++; 
  }

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

修正コード例 2

コピー
  class A{
     void foo();
  };
  void A::foo()
  {
      int i = 1;
      int j = 0;
      if((i=qq()) !=0) j++; 
  }

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

関連チェッカー

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。