Skip to content

readAt 이 non-canonical 배열 인덱스를 허용하는 문제 수정 (#208)#209

Merged
developer-1px merged 1 commit into
mainfrom
fix/208-readat-canonical-array-index
Jul 3, 2026
Merged

readAt 이 non-canonical 배열 인덱스를 허용하는 문제 수정 (#208)#209
developer-1px merged 1 commit into
mainfrom
fix/208-readat-canonical-array-index

Conversation

@developer-1px

Copy link
Copy Markdown
Owner

Closes #208

문제 (S2)

readAt 이 배열 인덱스를 Number(seg)+Number.isInteger 로만 검사해 RFC 6901 §4 금지 토큰(1.0,1e0,+1, 1,01,"")을 index 로 resolve 했다. write path 는 이를 path_not_found 로 거부하므로 읽기/쓰기 계약이 어긋나고, 반환 path 에 non-canonical 포인터가 실려 재사용 시 write 실패를 유발했다.

수정

readAt 배열 분기에서 같은 파일의 strict 파서 isArrayIndexSegment(0 또는 [1-9][0-9]*)로 canonical 여부를 검사한 뒤 상한만 확인. 기존 strict 파서 재사용으로 배열 인덱스 파싱을 정본으로 수렴.

검증

  • 회귀 테스트 issue-208-* 9 케이스 (canonical, non-canonical 6종 거부, 읽기/쓰기 일치, 범위 초과)
  • typecheck / layers:check / 전체 스위트(415 pass) 통과

🤖 Generated with Claude Code

readAt 이 배열 인덱스를 Number(seg)+Number.isInteger 로만 검사해
RFC 6901 §4 가 금지하는 1.0/1e0/+1/01/"" 를 index 로 resolve 했고,
write path 는 이를 거부해 읽기/쓰기 계약이 어긋났다. 같은 파일의 strict
파서 isArrayIndexSegment 를 재사용해 canonical 인덱스만 허용한다.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@developer-1px developer-1px merged commit 8bc6302 into main Jul 3, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

readAt 이 non-canonical 배열 인덱스를 허용해 읽기/쓰기 불일치 (RFC 6901 위반)

1 participant