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. 권고 사항
- P1 파일 5개를 Java/Spring 전환 시 먼저 처리
- OCR High Risk 5개 구간은 수동 검증 후 전환 진행
- 미캡처 구간 7개는 원본 C 코드 리뷰 후 사양서 보강 필요
- md 정리 파일을 각 모듈 전환 시 참조 문서로 활용