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