Skip to content

fix(security): FQDataType/SafeObjectInputStream 후속 개선 4가지 #8

Description

@ppzxc

PR #7 코드 리뷰에서 도출된 후속 개선 사항입니다.

1. FQDataType.write() — try-with-resources 적용

위치: FQDataType.java:77-78

// 현재
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();

// 개선
try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
    oos.writeObject(obj);
}

ByteArrayOutputStream이라 실제 리소스 누수는 없으나, 코드 일관성 및 향후 변경 안전성을 위해 try-with-resources 사용 권장.


2. SafeObjectInputStream — 다차원 배열 처리 추가

위치: SafeObjectInputStream.java:414

현재 [L...; 1단계 배열과 길이 2인 기본 타입 배열만 허용. [[Ljava.lang.String; 같은 다차원 객체 배열은 차단됨.

개선 방향:

  • 재귀 호출로 다차원 배열([[L...;, [[[L...;) 지원
  • 또는 Javadoc에 "1차원 배열만 지원" 명시

3. FQDataType.getMemory() — 고정값 개선 또는 문서화

위치: FQDataType.java:68-70

@Override
public int getMemory(T obj) {
    return 1024; // 하드코딩
}

H2 MVStore의 캐시 크기 추정에 사용되는 값으로, 실제 객체 크기와 괴리가 크면 캐시 효율이 저하될 수 있음.

개선 방향:

  • 추정값 반환 (e.g., 직렬화 후 byte 배열 길이 기반)
  • 또는 Javadoc에 "고정 추정값, 캐시 정밀도보다 단순성 우선" 의도 명시

4. 불필요한 커밋 쌍 정리 — H2 업그레이드/롤백

커밋: 143adc4 (2.2.224 → 2.3.232 업그레이드), 551e177 (2.3.232 → 2.2.224 롤백)

두 커밋이 상쇄되어 net change = 0이나 히스토리에 그대로 남아 있음. squash merge 전 git rebase -i로 두 커밋을 fixup 또는 drop 처리 권장.


관련 PR: #7

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions