계: Code Quality
코드 품질이 낮으면 예측할 수 없는 동작이 발생합니다. 사용자 입장에서는 사용 편의성이 떨어지는 것으로 나타나는 경우가 많습니다. 공격자에게는 예상치 못한 방법으로 시스템에 부담을 줄 수 있는 기회가 됩니다.
Code Correctness: clone() Invokes Overridable Function
Abstract
이 클래스 내의
clone()
메서드는 재정의할 수 있는 함수를 호출합니다.Explanation
clone()
함수가 오버라이드 가능 함수를 호출할 때 복제본이 부분적으로 초기화된 상태로 유지되거나 손상될 수 있습니다.예제 1: 다음
clone()
함수는 오버라이드할 수 있는 메서드를 호출합니다.
...
class User implements Cloneable {
private String username;
private boolean valid;
public Object clone() throws CloneNotSupportedException {
final User clone = (User) super.clone();
clone.doSomething();
return clone;
}
public void doSomething(){
...
}
}
doSomething()
함수와 이 함수를 포함하는 클래스는 final
이 아니므로 함수를 오버라이드할 수 있습니다. 이로 인해 복제된 clone
개체가 부분적으로 초기화된 상태로 유지될 수 있고, 그 결과 예기치 않은 방식으로 로직의 문제를 해결하지 않을 경우 오류가 발생할 수 있습니다.References
desc.structural.java.code_correctness_clone_invokes_overridable_function