# 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 정리 파일**을 각 모듈 전환 시 참조 문서로 활용