CS.RNRE
この警告は、null オブジェクト参照が逆参照されて null と比較される状況で報告されます。逆参照とチェックの間の追跡では、オブジェクト参照の変更はありません。つまり、逆参照で、オブジェクト参照は null になるか、または null チェックが不適切になる可能性が高くなります。
脆弱性とリスク
次の 3 つのうち 1 つを識別します。
- 設計により null となる可能性のあるポインターが、適切なチェックなしに逆参照されました。これはランタイムエラーにつながります。
- 条件が正しく記述されていないため、コードは意図したとおりに動作しません。
- 冗長なチェックがあります。不要なコードが生成されます。
例
コピー
public class A {
public void foo() {
A a = null;
a.foo();
if (a == null)
a = new A();
}
}
変数 'a' では、Klocwork は 4 行目で指摘レポート (CS.RNRE) を生成します。メソッド 'foo' を呼び出して 4 行目で逆参照され、5 行目で 'a' は if ステートメントで null についてチェックされます。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。