SV.CLONE.SUP
类定义调用 super.clone() 但是不实施 Cloneable 接口的克隆方法时,会出现该错误。
漏洞与风险
如果对象不实施 Cloneable,则 Object.clone() 方法会引发异常,这可能不是这种情况下的预计行为。
Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。
缓解与预防
如果目的是引发异常,则定义以下克隆方法:
复制
public final Object clone() throws CloneNotSupportedException
{
throw CloneNotSupportedException();
}
如果目的是定义适当的克隆方法,则类必须实施 Cloneable 接口。
示例 1
复制
public class SV_CLONE_SUP_Sample_1 {
private String password;
protected SV_CLONE_SUP_Sample_1(String x) {
password = x;
}
protected String getPassword() {
return password;
}
protected final Object clone()
throws CloneNotSupportedException {
return super.clone();
}
}
针对第 18 行的类声明报告 SV.CLONE.SUP:类“com.klocwork.jdefects.checkers.ast.samples.SV_CLONE_SUP_Sample_1”实施“clone”方法,但是不实施 Cloneable,这可能使 Object 克隆实施引发异常