UNINIT.CTOR.MUST
构造函数中存在未初始化的变量
UNINIT.CTOR.MUST 检查器可发现构造函数中存在未初始化的类变量。
漏洞与风险
在 C++ 中,基元数据类型变量需要显式初始化。在类方法中使用未初始化的成员变量一般会导致不可预测的行为,并且可能存在安全隐患。
缓解与预防
为了避免使用未初始化的变量,务必确保构造函数对所有类字段都进行了初始化。
漏洞代码示例
复制
class C {
int i;
int j;
public:
C() {
this->j = 0;
}
};
Klocwork 标记了第 6 行,指出构造函数退出时,this->i 变量的值仍未初始化。