CS.NRE.CHECK.MIGHT
已主动进行 null 检查的路径中的对象引用值可能显式取消引用,或通过调用可取消引用该值而无需检查 null 的函数来取消引用。
漏洞与风险
取消引用 null 对象引用是一个严重的运行时问题,该问题将导致一些操作系统的应用程序崩溃,并引发另一些操作系统出现运行时异常。
示例 1
复制
public class A {
public void foo() {
A a = new A();
if (a == null)
if (flag)
a.foo();
}
private bool flag;
}
Klocwork 在第 6 行为变量 a 生成了一个问题报告 (CS.NRE.CHECK.MIGHT)。变量 a 与第 4 行的 0 值进行了比较,因此,如果在第 5 行进行标记检查后在第 6 行取消引用该变量,仍可预计其为 null。