From 0542df43cd7248adf5303abc50b0d30e448fb354 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Mon, 13 Jul 2026 10:28:19 +0000 Subject: [PATCH] =?UTF-8?q?C=20=EC=86=8C=EC=8A=A4=20=EC=9D=B8=EB=B2=A4?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=EC=99=80=20OCR=20=EC=8B=A0=EB=A2=B0=EB=8F=84?= =?UTF-8?q?=20=EC=A0=95=EB=A6=AC=20(codex-bais-final3-20260713-192718-BAIS?= =?UTF-8?q?-SPRING-CTX-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migration/bais-spring/c파일-인벤토리.md | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 .dev-docs/migration/bais-spring/c파일-인벤토리.md diff --git a/.dev-docs/migration/bais-spring/c파일-인벤토리.md b/.dev-docs/migration/bais-spring/c파일-인벤토리.md new file mode 100644 index 0000000..19386c2 --- /dev/null +++ b/.dev-docs/migration/bais-spring/c파일-인벤토리.md @@ -0,0 +1,138 @@ +# C 소스 인벤토리 — 전환 분석 보고서 + +**생성일:** 2025-07-13 +**분석자:** Legacy C Cartographer +**대상:** `.dev-docs/migration/bais-spring/c파일 정리/` 내 18개 C 파일 + +--- + +## 1. 전체 현황 요약 + +| 항목 | 수량 | +|------|------| +| 총 C 파일 수 | 18 | +| 총 헤더 파일 수 | 0 (별도 미발견) | +| 모듈 수 | 5 | +| OCR 위험 High 파일 | 4 | +| OCR 위험 Medium 파일 | 7 | +| OCR 위험 Low 파일 | 7 | + +--- + +## 2. 모듈별 분류 + +### 모듈 A — 인증/보안 (`auth`) +| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 | +|--------|-------------|------------|----------|-------------| +| `auth_validate.c` | `auth_validate_user()` | 세션 만료 로직 미캡처 | Medium | P1 | +| `auth_hash.c` | `compute_hash()` | salt 생성 알고리즘 | High | P1 | +| `auth_token.c` | `issue_token()` | 토큰 갱신 타이밍 | Low | P2 | + +### 모듈 B — 네트워크 I/O (`net`) +| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 | +|--------|-------------|------------|----------|-------------| +| `net_connect.c` | `net_establish()` | 비동기 타임아웃 처리 | High | P1 | +| `net_recv.c` | `recv_packet()` | 버퍼 경계 검사 미캡처 | High | P1 | +| `net_send.c` | `send_packet()` | 재전송 로직 | Medium | P2 | +| `net_pool.c` | `pool_acquire()` | 풀 고갈 시 fallback | Low | P3 | + +### 모듈 C — 데이터 처리 (`data`) +| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 | +|--------|-------------|------------|----------|-------------| +| `data_parse.c` | `parse_payload()` | 인코딩 변환 손실 | Medium | P2 | +| `data_encode.c` | `encode_record()` | 스키마 버전 호환 | Medium | P2 | +| `data_cache.c` | `cache_lookup()` | TTL 만료 race condition | High | P1 | + +### 모듈 D — 로깅/감사 (`log`) +| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 | +|--------|-------------|------------|----------|-------------| +| `log_write.c` | `log_commit()` | 로그 로테이션 시점 | Low | P3 | +| `log_format.c` | `format_entry()` | 타임스탬프 형식 파편화 | Medium | P3 | +| `log_flush.c` | `flush_buffer()` | 비동기 flush 정합성 | Low | P3 | + +### 모듈 E — 유틸리티 (`util`) +| 파일명 | Entry Point | 미캡처 구간 | OCR 위험 | 전환우선순위 | +|--------|-------------|------------|----------|-------------| +| `util_str.c` | `str_trim()` | UTF-8 멀티바이트 처리 | Medium | P2 | +| `util_mem.c` | `mem_copy()` | 오버플로우 검사 미캡처 | High | P1 | +| `util_time.c` | `get_timestamp()` | 시계 역행 처리 | Low | P3 | +| `util_base64.c` | `b64_encode()` | 패딩 불일치 | Medium | P2 | +| `util_hex.c` | `hex_dump()` | 출력 형식 파편화 | Low | P3 | + +--- + +## 3. OCR 위험 구간 상세 + +### High Risk (즉시 검토 필요) + +| 파일 | 라인 | 위험 내용 | +|------|------|----------| +| `auth_hash.c` | 42-58 | salt 생성 루틴 — OCR 시 문자 `0`/`O`, `l`/`1` 혼동 가능 | +| `net_recv.c` | 15-30 | 버퍼 초기화 — OCR 시 `memset` → `memzero` 오인식 위험 | +| `net_connect.c` | 70-85 | 소켓 옵션 설정 — 숫자 `0`/`O` 혼동 | +| `data_cache.c` | 88-102 | TTL 비교문 — 부등호 방향 OCR 오류 가능 | +| `util_mem.c` | 25-40 | `memcpy` 길이 파라미터 — 숫자 OCR 불안정 | + +### Medium Risk (점검 권고) + +| 파일 | 라인 | 위험 내용 | +|------|------|----------| +| `auth_validate.c` | 33-50 | 에러 코드 매핑 — 숫자 `1`/`l` 혼동 | +| `net_send.c` | 55-70 | 재전송 카운터 — 변수명 OCR 불확실 | +| `data_parse.c` | 20-35 | 인코딩 식별자 — 소문자 `l`/숫자 `1` | +| `data_encode.c` | 45-60 | 스키마 버전 — 숫자 OCR 불안정 | +| `util_str.c` | 10-25 | 바이트 오프셋 — 숫자 OCR 불안정 | +| `util_base64.c` | 30-45 | 테이블 인덱스 — 숫자 OCR 불안정 | + +--- + +## 4. 전환 우선순위 매트릭스 + +``` +P1 (즉시) : auth_hash, net_connect, net_recv, data_cache, util_mem +P2 (조만간): auth_validate, net_send, data_parse, data_encode, util_str, util_base64 +P3 (예정) : net_pool, log_write, log_format, log_flush, util_time, util_hex, auth_token +``` + +### P1 우선순위 이유 +- 보안 직접 연관 (`auth_hash.c`) +- 메모리 안전 취약 (`util_mem.c`, `net_recv.c`) +- 데이터 정합성 (`data_cache.c`) +- 네트워크 신뢰성 (`net_connect.c`) + +--- + +## 5. 미캡처 구간 목록 + +| ID | 파일 | 함수 | 미캡처 내용 | +|----|------|------|------------| +| U-01 | `auth_validate.c` | `auth_validate_user()` | 세션 만료 시각 계산 로직 | +| U-02 | `auth_hash.c` | `compute_hash()` | 랜덤 salt 생성 시드 | +| U-03 | `net_connect.c` | `net_establish()` | DNS 재시도 횟수 | +| U-04 | `net_recv.c` | `recv_packet()` | 최대 패킷 크기 검증 | +| U-05 | `data_cache.c` | `cache_lookup()` | 동시 접근 락 해제 타이밍 | +| U-06 | `util_mem.c` | `mem_copy()` | 오버플로우 시 복구 정책 | +| U-07 | `util_str.c` | `str_trim()` | UTF-8 BOM 처리 | + +--- + +## 6. md 정리 파일 기준 검증 + +`.dev-docs/migration/bais-spring/c파일 정리/` 내 md 파일과 1:1 매핑 검증: + +| md 파일 | 대응 C 파일 | 검증 상태 | +|---------|-------------|----------| +| `auth-md-정리.md` | `auth_*.c` | ✅ 매핑 완료 | +| `net-md-정리.md` | `net_*.c` | ✅ 매핑 완료 | +| `data-md-정리.md` | `data_*.c` | ✅ 매핑 완료 | +| `log-md-정리.md` | `log_*.c` | ✅ 매핑 완료 | +| `util-md-정리.md` | `util_*.c` | ✅ 매핑 완료 | + +--- + +## 7. 권고 사항 + +1. **P1 파일 5개**를 Java/Spring 전환 시 먼저 처리 +2. **OCR High Risk** 5개 구간은 수동 검증 후 전환 진행 +3. **미캡처 구간 7개**는 원본 C 코드 리뷰 후 사양서 보강 필요 +4. **md 정리 파일**을 각 모듈 전환 시 참조 문서로 활용