CS.NRE.FUNC.MUST
通过调用可能返回 null 的函数生成的对象引用值,将显式取消引用,或通过调用可取消引用该值而无需检查 null 的函数来取消引用。
漏洞与风险
取消引用 null 对象引用是一个严重的运行时问题,该问题将导致一些操作系统的应用程序崩溃,或引发另一些操作系统出现运行时异常。
示例 1
复制
public class A {
public A foo() {
if (flag)
return null;
return new A();
}
public void var() {
A a = foo();
a.foo();
}
private bool flag;
}
Klocwork 在第 10 行为变量 a 生成了一个问题报告 (CS.NRE.FUNC.MUST)。变量 a 已赋值给可能为 null 并由第 9 行的函数 foo 调用生成的一个值,且将在第 10 行取消引用。