CS.NRE.GEN.CALL.MIGHT

null 常量局部赋值过程中的对象引用值,或通过调用将返回 null 的函数生成的对象引用值,可能传递给可能取消引用该值而无需检查 null 的函数。

漏洞与风险

取消引用 null 对象引用是一个严重的运行时问题,该问题将导致一些操作系统的应用程序崩溃,并引发另一些操作系统出现运行时异常。

示例 1

复制
  public class A {
    public void abc() {}
     public void foo(A a) {
      if (flag2)
        return;
      a.abc();
     }
  
     public void var() {
     A a = null;
     if (flag)
       foo(a);
    }
 
    private bool flag;
    private bool flag2;
 }

Klocwork 在第 12 行为变量 a 生成了一个问题报告 (CS.NRE.GEN.CALL.MIGHT)。变量 a 已显式赋值给第 10 行的 null 值。此变量可作为参数 1 传递给第 12 行的函数 foo,该函数可取消引用该变量。

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。