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 が提供しているアプリケーションセキュリティトレーニング教材。