CS.NRE.CHECK.CALL.MIGHT

An object reference value from a path where it is positively checked for null might be passed to a function that can dereference it without checking for null.

Vulnerability and risk

Dereferencing a null object reference is a critical runtime problem that will crash the application on some operating systems and throw a runtime exception on others.

Example 1

1  public class A {
2    public void abc() {}
3     public void foo(A a) {
4      if (flag2)
5        return;
6      a.abc();
7     }
8  
9    public A boo() {
10     if (flag3)
11       return new A();
12     return null;
13   }
14 
15    public void var() {
16     A a = new A();
17     if (a != null) {
18       DoSomething();
19     }
20     if (flag) {
21       foo(a);
22     }
23    }
24    
25    private void DoSomething() {}
26
27    private bool flag;
28    private bool flag2;
29    private bool flag3;
30 }

Klocwork produces an issue report (CS.NRE.CHECK.CALL.MIGHT) at line 21 for variable 'a'. Variable 'a' is compared with null value at line 17, and therefore may still be expected to be null if it is passed as argument 1 to function 'foo' at line 21, which may dereference it.

Security training

Application security training materials provided by Secure Code Warrior.