EN JP CN

CS.NRE.GEN.CALL.MUST

CS.NRE.GEN.CALL.MUST

null 定数のローカル割り当てまたは null を返す関数の呼び出しによって、オブジェクト参照は、それを null についてチェックせずに逆参照する可能性がある関数に渡されます。

脆弱性とリスク

null オブジェクト参照の逆参照は、一部のオペレーティングシステムでのアプリケーションのクラッシュや実行時例外のスローを引き起こす実行時の重大な問題です。

例 1

1  public class A {
2    public void abc() {}
3     public void foo(A a) {
4      if (flag)
5        return;
6      a.abc();
7     }
8  
9     public void var() {
10     A a = null;
11     foo(a);
12    }
13 
14    private bool flag;
15 }

変数 'a' では、Klocwork は 11 行目で指摘レポート (CS.NRE.GEN.CALL.MUST) を生成します。変数 'a' は 10 行目で null 値に明示的に割り当てられ、11 行目で引数 1 として (それを逆参照する可能性がある) 関数 'foo' に渡される可能性があります。