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();
}
}
SV.CLONE.SUP が 18 行目のクラス宣言に対して報告されています。'com.klocwork.jdefects.checkers.ast.samples.SV_CLONE_SUP_Sample_1' クラスが 'clone' メソッドを実装していますが Cloneable を実装していないため、Object クローン実装が例外をスローします。